Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
jleandroperez committed May 18, 2021
2 parents cfa8a33 + f68c9d7 commit d76e7d9
Show file tree
Hide file tree
Showing 5 changed files with 96 additions and 44 deletions.
24 changes: 14 additions & 10 deletions Simperium/NSURLRequest+Simperium.h
Expand Up @@ -4,17 +4,21 @@ NS_ASSUME_NONNULL_BEGIN

@interface NSURLRequest (Simperium)

+ (NSURLRequest *)sp_loginRequestWithAppID:(NSString *)appID
apiKey:(NSString *)apiKey
provider:(NSString *)provider
username:(NSString *)username
password:(NSString *)password;
+ (NSURLRequest *)sp_loginRequestWithBaseURL:(NSString *)baseURL
customHTTPHeaders:(NSDictionary *)customHTTPHeaders
appID:(NSString *)appID
apiKey:(NSString *)apiKey
provider:(NSString *)provider
username:(NSString *)username
password:(NSString *)password;

+ (NSURLRequest *)sp_signupRequestWithAppID:(NSString *)appID
apiKey:(NSString *)apiKey
provider:(NSString *)provider
username:(NSString *)username
password:(NSString *)password;
+ (NSURLRequest *)sp_signupRequestWithBaseURL:(NSString *)baseURL
customHTTPHeaders:(NSDictionary *)customHTTPHeaders
appID:(NSString *)appID
apiKey:(NSString *)apiKey
provider:(NSString *)provider
username:(NSString *)username
password:(NSString *)password;

@end

Expand Down
71 changes: 55 additions & 16 deletions Simperium/NSURLRequest+Simperium.m
Expand Up @@ -3,9 +3,26 @@
#import "SPEnvironment.h"


@interface NSURLRequest (Private)
- (void)addHTTPHeaders:(NSDictionary *)HTTPHeaders;
@end


@implementation NSMutableURLRequest (Private)

- (void)addHTTPHeaders:(NSDictionary *)HTTPHeaders {
for (NSString *key in HTTPHeaders.allKeys) {
[self setValue:HTTPHeaders[key] forHTTPHeaderField:key];
}
}

@end


@implementation NSURLRequest (Simperium)

+ (NSURLRequest *)sp_requestWithURL:(NSURL *)url
customHTTPHeaders:(NSDictionary *)customHTTPHeaders
appID:(NSString *)appID
apiKey:(NSString *)apiKey
provider:(NSString *)provider
Expand All @@ -21,35 +38,57 @@ + (NSURLRequest *)sp_requestWithURL:(NSURL *)url
@"provider" : provider ?: @""
};

NSDictionary *authHTTPHeaders = @{
@"Content-Type" : @"application/json",
@"X-Simperium-API-Key" : apiKey
};

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:apiKey forHTTPHeaderField:@"X-Simperium-API-Key"];
[request addHTTPHeaders:authHTTPHeaders];
[request addHTTPHeaders:customHTTPHeaders];

request.HTTPMethod = @"POST";
request.HTTPBody = [[body sp_JSONString] dataUsingEncoding:NSUTF8StringEncoding];

return request;
}

+ (NSURLRequest *)sp_loginRequestWithAppID:(NSString *)appID
apiKey:(NSString *)apiKey
provider:(NSString *)provider
username:(NSString *)username
password:(NSString *)password {
+ (NSURLRequest *)sp_loginRequestWithBaseURL:(NSString *)baseURL
customHTTPHeaders:(NSDictionary *)customHTTPHeaders
appID:(NSString *)appID
apiKey:(NSString *)apiKey
provider:(NSString *)provider
username:(NSString *)username
password:(NSString *)password {
NSParameterAssert(appID);
NSURL *requestURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@/authorize/", SPAuthURL, appID]];
return [self sp_requestWithURL:requestURL appID:appID apiKey:apiKey provider:provider username:username password:password];
NSURL *requestURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@/authorize/", baseURL, appID]];
return [self sp_requestWithURL:requestURL
customHTTPHeaders:customHTTPHeaders
appID:appID
apiKey:apiKey
provider:provider
username:username
password:password];
}

+ (NSURLRequest *)sp_signupRequestWithAppID:(NSString *)appID
apiKey:(NSString *)apiKey
provider:(NSString *)provider
username:(NSString *)username
password:(NSString *)password {
+ (NSURLRequest *)sp_signupRequestWithBaseURL:(NSString *)baseURL
customHTTPHeaders:(NSDictionary *)customHTTPHeaders
appID:(NSString *)appID
apiKey:(NSString *)apiKey
provider:(NSString *)provider
username:(NSString *)username
password:(NSString *)password {
NSParameterAssert(appID);
NSURL *requestURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@/create/", SPAuthURL, appID]];
return [self sp_requestWithURL:requestURL appID:appID apiKey:apiKey provider:provider username:username password:password];
NSURL *requestURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@/create/", baseURL, appID]];
return [self sp_requestWithURL:requestURL
customHTTPHeaders:customHTTPHeaders
appID:appID
apiKey:apiKey
provider:provider
username:username
password:password];
}

@end

6 changes: 4 additions & 2 deletions Simperium/SPAuthenticator.h
Expand Up @@ -36,8 +36,10 @@ NS_ASSUME_NONNULL_BEGIN

@interface SPAuthenticator : NSObject

@property (nonatomic, copy, readwrite) NSString *providerString;
@property (nonatomic, assign, readonly) BOOL connected;
@property (nonatomic, copy, readwrite) NSString *authURL;
@property (nonatomic, copy, readwrite) NSDictionary *customHTTPHeaders;
@property (nonatomic, copy, readwrite) NSString *providerString;
@property (nonatomic, assign, readonly) BOOL connected;

- (instancetype)initWithDelegate:(id<SPAuthenticatorDelegate>)authDelegate simperium:(Simperium *)s;

Expand Down
37 changes: 22 additions & 15 deletions Simperium/SPAuthenticator.m
Expand Up @@ -55,6 +55,7 @@ - (instancetype)initWithDelegate:(id<SPAuthenticatorDelegate>)authDelegate simpe
if (self) {
_delegate = authDelegate;
_simperium = s;
_authURL = SPAuthURL;

#if TARGET_OS_IPHONE
[SPKeychain setAccessibilityType:kSecAttrAccessibleAlways];
Expand Down Expand Up @@ -139,11 +140,13 @@ - (void)authenticateWithUsername:(NSString *)username
NSParameterAssert(successHandler);
NSParameterAssert(failureHandler);

NSURLRequest *request = [NSURLRequest sp_loginRequestWithAppID:self.simperium.appID
apiKey:self.simperium.APIKey
provider:self.providerString
username:username
password:password];
NSURLRequest *request = [NSURLRequest sp_loginRequestWithBaseURL:self.authURL
customHTTPHeaders:self.customHTTPHeaders
appID:self.simperium.appID
apiKey:self.simperium.APIKey
provider:self.providerString
username:username
password:password];
SPLogInfo(@"Simperium Authenticating: %@", request.URL);

[[NSURLSession sharedSession] performURLRequest:request completionHandler:^(NSInteger statusCode, NSString * _Nullable responseString, NSError * _Nullable error) {
Expand Down Expand Up @@ -173,11 +176,13 @@ - (void)validateWithUsername:(NSString *)username
NSParameterAssert(successHandler);
NSParameterAssert(failureHandler);

NSURLRequest *request = [NSURLRequest sp_loginRequestWithAppID:self.simperium.appID
apiKey:self.simperium.APIKey
provider:self.providerString
username:username
password:password];
NSURLRequest *request = [NSURLRequest sp_loginRequestWithBaseURL:self.authURL
customHTTPHeaders:self.customHTTPHeaders
appID:self.simperium.appID
apiKey:self.simperium.APIKey
provider:self.providerString
username:username
password:password];
SPLogInfo(@"Simperium Validating Credentials: %@", request.URL);

[[NSURLSession sharedSession] performURLRequest:request completionHandler:^(NSInteger statusCode, NSString * _Nullable responseString, NSError * _Nullable error) {
Expand Down Expand Up @@ -205,11 +210,13 @@ - (void)signupWithUsername:(NSString *)username
NSParameterAssert(successHandler);
NSParameterAssert(failureHandler);

NSURLRequest *request = [NSURLRequest sp_signupRequestWithAppID:self.simperium.appID
apiKey:self.simperium.APIKey
provider:self.providerString
username:username
password:password];
NSURLRequest *request = [NSURLRequest sp_signupRequestWithBaseURL:self.authURL
customHTTPHeaders:self.customHTTPHeaders
appID:self.simperium.appID
apiKey:self.simperium.APIKey
provider:self.providerString
username:username
password:password];
SPLogInfo(@"Simperium Signup: %@", request.URL);

[[NSURLSession sharedSession] performURLRequest:request completionHandler:^(NSInteger statusCode, NSString * _Nullable responseString, NSError * _Nullable error) {
Expand Down
2 changes: 1 addition & 1 deletion Simperium/SPEnvironment.m
Expand Up @@ -30,7 +30,7 @@
#endif

// TODO: Update this automatically via a script that looks at current git tag
NSString* const SPLibraryVersion = @"1.7.0";
NSString* const SPLibraryVersion = @"1.8.0";

/// SSL Pinning
///
Expand Down

0 comments on commit d76e7d9

Please sign in to comment.