summaryrefslogtreecommitdiff
path: root/StoneIsland/platforms/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.m
diff options
context:
space:
mode:
Diffstat (limited to 'StoneIsland/platforms/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.m')
-rw-r--r--StoneIsland/platforms/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.m119
1 files changed, 119 insertions, 0 deletions
diff --git a/StoneIsland/platforms/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.m b/StoneIsland/platforms/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.m
new file mode 100644
index 00000000..64039091
--- /dev/null
+++ b/StoneIsland/platforms/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.m
@@ -0,0 +1,119 @@
+/*
+ * Copyright 2019 Google
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import "FIRInstanceIDTokenDeleteOperation.h"
+
+#import "FIRInstanceIDCheckinPreferences.h"
+#import "FIRInstanceIDConstants.h"
+#import "FIRInstanceIDDefines.h"
+#import "FIRInstanceIDLogger.h"
+#import "FIRInstanceIDTokenOperation+Private.h"
+#import "FIRInstanceIDUtilities.h"
+#import "NSError+FIRInstanceID.h"
+
+@implementation FIRInstanceIDTokenDeleteOperation
+
+- (instancetype)initWithAuthorizedEntity:(NSString *)authorizedEntity
+ scope:(NSString *)scope
+ checkinPreferences:(FIRInstanceIDCheckinPreferences *)checkinPreferences
+ instanceID:(NSString *)instanceID
+ action:(FIRInstanceIDTokenAction)action {
+ self = [super initWithAction:action
+ forAuthorizedEntity:authorizedEntity
+ scope:scope
+ options:nil
+ checkinPreferences:checkinPreferences
+ instanceID:instanceID];
+ if (self) {
+ }
+ return self;
+}
+
+- (void)performTokenOperation {
+ NSMutableURLRequest *request = [self tokenRequest];
+
+ // Build form-encoded body
+ NSString *deviceAuthID = self.checkinPreferences.deviceID;
+ NSMutableArray<NSURLQueryItem *> *queryItems =
+ [FIRInstanceIDTokenOperation standardQueryItemsWithDeviceID:deviceAuthID scope:self.scope];
+ [queryItems addObject:[NSURLQueryItem queryItemWithName:@"delete" value:@"true"]];
+ if (self.action == FIRInstanceIDTokenActionDeleteTokenAndIID) {
+ [queryItems addObject:[NSURLQueryItem queryItemWithName:@"iid-operation" value:@"delete"]];
+ }
+ if (self.authorizedEntity) {
+ [queryItems addObject:[NSURLQueryItem queryItemWithName:@"sender" value:self.authorizedEntity]];
+ }
+ // Typically we include our public key-signed url items, but in some cases (like deleting all FCM
+ // tokens), we don't.
+ if (self.instanceID.length > 0) {
+ [queryItems addObject:[NSURLQueryItem queryItemWithName:kFIRInstanceIDParamInstanceID
+ value:self.instanceID]];
+ }
+
+ NSURLComponents *components = [[NSURLComponents alloc] init];
+ components.queryItems = queryItems;
+ NSString *content = components.query;
+ request.HTTPBody = [content dataUsingEncoding:NSUTF8StringEncoding];
+ FIRInstanceIDLoggerDebug(kFIRInstanceIDMessageCodeTokenDeleteOperationFetchRequest,
+ @"Unregister request to %@ content: %@", FIRInstanceIDRegisterServer(),
+ content);
+
+ FIRInstanceID_WEAKIFY(self);
+ void (^requestHandler)(NSData *, NSURLResponse *, NSError *) =
+ ^(NSData *data, NSURLResponse *response, NSError *error) {
+ FIRInstanceID_STRONGIFY(self);
+ [self handleResponseWithData:data response:response error:error];
+ };
+
+ // Test block
+ if (self.testBlock) {
+ self.testBlock(request, requestHandler);
+ return;
+ }
+
+ NSURLSession *session = [FIRInstanceIDTokenOperation sharedURLSession];
+ self.dataTask = [session dataTaskWithRequest:request completionHandler:requestHandler];
+ [self.dataTask resume];
+}
+
+- (void)handleResponseWithData:(NSData *)data
+ response:(NSURLResponse *)response
+ error:(NSError *)error {
+ if (error) {
+ FIRInstanceIDLoggerDebug(kFIRInstanceIDMessageCodeTokenDeleteOperationRequestError,
+ @"Device unregister HTTP fetch error. Error code: %ld",
+ _FIRInstanceID_L(error.code));
+ [self finishWithResult:FIRInstanceIDTokenOperationError token:nil error:error];
+ return;
+ }
+
+ NSString *dataResponse = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
+ if (dataResponse.length == 0) {
+ NSError *error = [NSError errorWithFIRInstanceIDErrorCode:kFIRInstanceIDErrorCodeUnknown];
+ [self finishWithResult:FIRInstanceIDTokenOperationError token:nil error:error];
+ return;
+ }
+
+ if (![dataResponse hasPrefix:@"deleted="] && ![dataResponse hasPrefix:@"token="]) {
+ FIRInstanceIDLoggerDebug(kFIRInstanceIDMessageCodeTokenDeleteOperationBadResponse,
+ @"Invalid unregister response %@", response);
+ NSError *error = [NSError errorWithFIRInstanceIDErrorCode:kFIRInstanceIDErrorCodeUnknown];
+ [self finishWithResult:FIRInstanceIDTokenOperationError token:nil error:error];
+ return;
+ }
+ [self finishWithResult:FIRInstanceIDTokenOperationSucceeded token:nil error:nil];
+}
+@end