Files
firebase-ios-sdk/FirebaseAuth/Sources/Backend/RPC/FIRSecureTokenRequest.m
T
Rosalyn Tan 67038afb46 Remove unused STS auth code flow. (#9094)
* Remove unused STS auth code flow.

* Fix unit tests.
2021-12-13 17:45:55 -08:00

123 lines
3.8 KiB
Objective-C

/*
* 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 "FirebaseAuth/Sources/Backend/RPC/FIRSecureTokenRequest.h"
#import "FirebaseAuth/Sources/Backend/FIRAuthRequestConfiguration.h"
NS_ASSUME_NONNULL_BEGIN
/** @var kFIRSecureTokenServiceGetTokenURLFormat
@brief The format of the secure token service URLs. Requires string format substitution with
the client's API Key.
*/
static NSString *const kFIRSecureTokenServiceGetTokenURLFormat = @"https://%@/v1/token?key=%@";
/** @var kFIREmulatorURLFormat
@brief The format of the emulated secure token service URLs. Requires string format substitution
with the emulator host, the gAPIHost, and the client's API Key.
*/
static NSString *const kFIREmulatorURLFormat = @"http://%@/%@/v1/token?key=%@";
/** @var kFIRSecureTokenServiceGrantTypeRefreshToken
@brief The string value of the @c FIRSecureTokenRequestGrantTypeRefreshToken request type.
*/
static NSString *const kFIRSecureTokenServiceGrantTypeRefreshToken = @"refresh_token";
/** @var kGrantTypeKey
@brief The key for the "grantType" parameter in the request.
*/
static NSString *const kGrantTypeKey = @"grantType";
/** @var kRefreshTokenKey
@brief The key for the "refreshToken" parameter in the request.
*/
static NSString *const kRefreshTokenKey = @"refreshToken";
/** @var gAPIHost
@brief Host for server API calls.
*/
static NSString *gAPIHost = @"securetoken.googleapis.com";
@implementation FIRSecureTokenRequest {
/** @var _requestConfiguration
@brief Contains configuration relevant to the request.
*/
FIRAuthRequestConfiguration *_requestConfiguration;
}
+ (FIRSecureTokenRequest *)refreshRequestWithRefreshToken:(NSString *)refreshToken
requestConfiguration:
(FIRAuthRequestConfiguration *)requestConfiguration {
return [[self alloc] initWithRefreshToken:refreshToken requestConfiguration:requestConfiguration];
}
- (nullable instancetype)initWithRefreshToken:(NSString *)refreshToken
requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration {
self = [super init];
if (self) {
_refreshToken = [refreshToken copy];
_APIKey = [requestConfiguration.APIKey copy];
_requestConfiguration = requestConfiguration;
}
return self;
}
- (FIRAuthRequestConfiguration *)requestConfiguration {
return _requestConfiguration;
}
- (NSURL *)requestURL {
NSString *URLString;
NSString *emulatorHostAndPort = _requestConfiguration.emulatorHostAndPort;
if (emulatorHostAndPort) {
URLString =
[NSString stringWithFormat:kFIREmulatorURLFormat, emulatorHostAndPort, gAPIHost, _APIKey];
} else {
URLString =
[NSString stringWithFormat:kFIRSecureTokenServiceGetTokenURLFormat, gAPIHost, _APIKey];
}
NSURL *URL = [NSURL URLWithString:URLString];
return URL;
}
- (BOOL)containsPostBody {
return YES;
}
- (nullable id)unencodedHTTPRequestBodyWithError:(NSError *_Nullable *_Nullable)error {
NSMutableDictionary *postBody = [@{
kGrantTypeKey : kFIRSecureTokenServiceGrantTypeRefreshToken,
kRefreshTokenKey : _refreshToken
} mutableCopy];
return [postBody copy];
}
#pragma mark - Internal API for development
+ (NSString *)host {
return gAPIHost;
}
+ (void)setHost:(NSString *)host {
gAPIHost = host;
}
@end
NS_ASSUME_NONNULL_END