You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
4.4 KiB
133 lines
4.4 KiB
/*
|
|
* Copyright 2017 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 "FIRVerifyPhoneNumberRequest.h"
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
/** @var kVerifyPhoneNumberEndPoint
|
|
@brief The "verifyPhoneNumber" endpoint.
|
|
*/
|
|
static NSString *const kVerifyPhoneNumberEndPoint = @"verifyPhoneNumber";
|
|
|
|
/** @var kVerificationIDKey
|
|
@brief The key for the verification ID parameter in the request.
|
|
*/
|
|
static NSString *const kVerificationIDKey = @"sessionInfo";
|
|
|
|
/** @var kVerificationCodeKey
|
|
@brief The key for the verification code parameter in the request.
|
|
*/
|
|
static NSString *const kVerificationCodeKey = @"code";
|
|
|
|
/** @var kIDTokenKey
|
|
@brief The key for the "ID Token" value in the request.
|
|
*/
|
|
static NSString *const kIDTokenKey = @"idToken";
|
|
|
|
/** @var kTemporaryProofKey
|
|
@brief The key for the temporary proof value in the request.
|
|
*/
|
|
static NSString *const kTemporaryProofKey = @"temporaryProof";
|
|
|
|
/** @var kPhoneNumberKey
|
|
@brief The key for the phone number value in the request.
|
|
*/
|
|
static NSString *const kPhoneNumberKey = @"phoneNumber";
|
|
|
|
/** @var kOperationKey
|
|
@brief The key for the operation value in the request.
|
|
*/
|
|
static NSString *const kOperationKey = @"operation";
|
|
|
|
@implementation FIRVerifyPhoneNumberRequest
|
|
|
|
- (nullable instancetype)initWithTemporaryProof:(NSString *)temporaryProof
|
|
phoneNumber:(NSString *)phoneNumber
|
|
operation:(FIRAuthOperationType)operation
|
|
requestConfiguration:
|
|
(FIRAuthRequestConfiguration *)requestConfiguration {
|
|
self = [super initWithEndpoint:kVerifyPhoneNumberEndPoint
|
|
requestConfiguration:requestConfiguration];
|
|
if (self) {
|
|
_temporaryProof = [temporaryProof copy];
|
|
_phoneNumber = [phoneNumber copy];
|
|
_operation = operation;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (nullable instancetype)initWithVerificationID:(NSString *)verificationID
|
|
verificationCode:(NSString *)verificationCode
|
|
operation:(FIRAuthOperationType)operation
|
|
requestConfiguration:
|
|
(FIRAuthRequestConfiguration *)requestConfiguration {
|
|
self = [super initWithEndpoint:kVerifyPhoneNumberEndPoint
|
|
requestConfiguration:requestConfiguration];
|
|
if (self) {
|
|
_verificationID = verificationID;
|
|
_verificationCode = verificationCode;
|
|
_operation = operation;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
/** @fn FIRAuthOperationString
|
|
@brief Returns a string object corresponding to the provided FIRAuthOperationType value.
|
|
@param operationType The value of the FIRAuthOperationType enum which will be translated to its
|
|
corresponding string value.
|
|
@return The string value corresponding to the FIRAuthOperationType argument.
|
|
*/
|
|
NSString *const FIRAuthOperationString(FIRAuthOperationType operationType) {
|
|
switch(operationType){
|
|
case FIRAuthOperationTypeUnspecified:
|
|
return @"VERIFY_OP_UNSPECIFIED";
|
|
case FIRAuthOperationTypeSignUpOrSignIn:
|
|
return @"SIGN_UP_OR_IN";
|
|
case FIRAuthOperationTypeReauth:
|
|
return @"REAUTH";
|
|
case FIRAuthOperationTypeLink:
|
|
return @"LINK";
|
|
case FIRAuthOperationTypeUpdate:
|
|
return @"UPDATE";
|
|
}
|
|
}
|
|
|
|
- (nullable id)unencodedHTTPRequestBodyWithError:(NSError *__autoreleasing _Nullable *)error {
|
|
NSMutableDictionary *postBody = [NSMutableDictionary dictionary];
|
|
if (_verificationID) {
|
|
postBody[kVerificationIDKey] = _verificationID;
|
|
}
|
|
if (_verificationCode) {
|
|
postBody[kVerificationCodeKey] = _verificationCode;
|
|
}
|
|
if (_accessToken) {
|
|
postBody[kIDTokenKey] = _accessToken;
|
|
}
|
|
if (_temporaryProof) {
|
|
postBody[kTemporaryProofKey] = _temporaryProof;
|
|
}
|
|
if (_phoneNumber) {
|
|
postBody[kPhoneNumberKey] = _phoneNumber;
|
|
}
|
|
NSString *operation = FIRAuthOperationString(_operation);
|
|
postBody[kOperationKey] = operation;
|
|
return postBody;
|
|
}
|
|
|
|
@end
|
|
|
|
NS_ASSUME_NONNULL_END
|