- expose oauthmode for all methods and fix oauthmode
This commit is contained in:
parent
6c8cf96e65
commit
cd55374ea8
@ -39,7 +39,7 @@
|
|||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
0ABF8340F735722CEE937FA3 /* libPods-PNObject_Example.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-PNObject_Example.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
0ABF8340F735722CEE937FA3 /* libPods-PNObject_Example.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-PNObject_Example.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
116AF818F8117B91EF290C9A /* Pods-PNObject_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PNObject_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example.release.xcconfig"; sourceTree = "<group>"; };
|
116AF818F8117B91EF290C9A /* Pods-PNObject_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PNObject_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
2661CEE1F223361CD1DACC25 /* PNObject.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = PNObject.podspec; path = ../PNObject.podspec; sourceTree = "<group>"; };
|
2661CEE1F223361CD1DACC25 /* PNObject.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = PNObject.podspec; path = ../PNObject.podspec; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
|
||||||
3E392C278361604C1602CAF0 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = "<group>"; };
|
3E392C278361604C1602CAF0 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = "<group>"; };
|
||||||
6003F58A195388D20070C39A /* PNObject_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PNObject_Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
6003F58A195388D20070C39A /* PNObject_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PNObject_Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
6003F58D195388D20070C39A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
6003F58D195388D20070C39A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||||
|
|||||||
@ -33,23 +33,27 @@
|
|||||||
_window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
|
_window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
|
||||||
// Override point for customization after application launch.
|
// Override point for customization after application launch.
|
||||||
|
|
||||||
|
/**
|
||||||
[PNObjectConfig initSharedInstanceForEnvironments:@{EnvironmentDevelopment : @{BaseUrl:@"http://pnobject.local/",EndpointPath:@"api/v1/"},
|
[PNObjectConfig initSharedInstanceForEnvironments:@{EnvironmentDevelopment : @{BaseUrl:@"http://pnobject.local/",EndpointPath:@"api/v1/"},
|
||||||
EnvironmentStage : @{BaseUrl:@"https://idd.ppreview.it/",EndpointPath:@"wp-json/v1/"},
|
EnvironmentStage : @{BaseUrl:@"https://pnobject.stage.it/",EndpointPath:@"api/v1/"},
|
||||||
EnvironmentProduction : @{BaseUrl:@"http://pnobject.prod.it/",EndpointPath:@"api/v1/"},
|
EnvironmentProduction : @{BaseUrl:@"http://pnobject.prod.it/",EndpointPath:@"api/v1/"},
|
||||||
} userSubclass:[PNUser class] withOauthMode:OAuthModeClientCredential];
|
} andUserSubclass:[PNUser class]];
|
||||||
|
|
||||||
[[PNObjectConfig sharedInstance] setClientID:@"xVdEbNLLierj9CJoLNo5lsbg7VFs8UikqADbcwKA" clientSecret:@"2WWSJrDNbZhbUUCXIOTBiYIJv9muiRGK68f2B2Eb" oAuthEndpointAction:@"oauth/token" forEnv:EnvironmentStage];
|
[[PNObjectConfig sharedInstance] setClientID:@"******" clientSecret:@"******" oAuthEndpointAction:@"api/v1/" oauthMode:OAuthModeClientCredential forEnv:EnvironmentStage];
|
||||||
[[PNObjectConfig sharedInstance] setOauthClientID:@"tXYhKtcvfYdCM4tNor6WfbclEWYkoGWqBimUBzqZ" oauthClientSecret:@"3UMEQthBHp1oEo0pjFmgkifhig689ZL5L9DsSETd" oAuthEndpointAction:@"oauth/token" forEnv:EnvironmentStage];
|
[[PNObjectConfig sharedInstance] setClientID:@"******" clientSecret:@"******" oAuthEndpointAction:@"api/v1/" oauthMode:OAuthModePassword forEnv:EnvironmentStage];
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/** Can user special char %@ to autoset EndpointPath to Oauth endpointPath */
|
||||||
|
[[PNObjectConfig sharedInstance] setClientID:@"******" clientSecret:@"******" oAuthEndpointAction:@"%@oauth-token" oauthMode:OAuthModeClientCredential forEnv:EnvironmentStage];
|
||||||
|
[[PNObjectConfig sharedInstance] setClientID:@"******" clientSecret:@"******" oAuthEndpointAction:@"%@oauth-token" oauthMode:OAuthModePassword forEnv:EnvironmentStage];
|
||||||
|
|
||||||
[[PNObjectConfig sharedInstance] setEnvironment:EnvironmentStage];
|
[[PNObjectConfig sharedInstance] setEnvironment:EnvironmentStage];
|
||||||
//[[PNObjectConfig sharedInstance] setHTTPHeaderValue:@"XMLHttpRequest" forKey:@"X-Request-With"];
|
|
||||||
|
|
||||||
NSLogDebug(@"%@",[[PNObjectConfig sharedInstance] baseUrl]);
|
NSLogDebug(@"%@",[[PNObjectConfig sharedInstance] baseUrl]);
|
||||||
NSLogDebug(@"%@",[[PNObjectConfig sharedInstance] endPointPath]);
|
NSLogDebug(@"%@",[[PNObjectConfig sharedInstance] endPointPath]);
|
||||||
NSLogDebug(@"%@",[[PNObjectConfig sharedInstance] endPointUrl]);
|
NSLogDebug(@"%@",[[PNObjectConfig sharedInstance] endPointUrl]);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
PNObjViewController *viewController = [[PNObjViewController alloc] init];
|
PNObjViewController *viewController = [[PNObjViewController alloc] init];
|
||||||
|
|
||||||
switch ([[UIDevice currentDevice] deviceFamily]) {
|
switch ([[UIDevice currentDevice] deviceFamily]) {
|
||||||
|
|||||||
@ -93,11 +93,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void) refreshTokenAction {
|
- (void) refreshTokenAction {
|
||||||
[[PNObjectConfig sharedInstance] refreshTokenForClientCredential];
|
[[PNObjectConfig sharedInstance] refreshTokenForClientCredentialWithBlockSuccess:^(BOOL refreshSuccess) {
|
||||||
|
|
||||||
|
} failure:^(NSError * _Nonnull error) {
|
||||||
|
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) cancelTokenAction {
|
- (void) cancelTokenAction {
|
||||||
[[PNObjectConfig sharedInstance] resetToken];
|
[[PNObjectConfig sharedInstance] resetAllTokens];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) apiCallAction {
|
- (void) apiCallAction {
|
||||||
|
|||||||
@ -38,7 +38,7 @@ PODS:
|
|||||||
- NSString-Helper (1.0.6)
|
- NSString-Helper (1.0.6)
|
||||||
- nv-ios-http-status (0.0.1)
|
- nv-ios-http-status (0.0.1)
|
||||||
- PEAR-FileManager-iOS (1.3.1)
|
- PEAR-FileManager-iOS (1.3.1)
|
||||||
- PNObject (1.5):
|
- PNObject (2.0):
|
||||||
- AFNetworking
|
- AFNetworking
|
||||||
- CodFis-Helper
|
- CodFis-Helper
|
||||||
- DDDKeychainWrapper
|
- DDDKeychainWrapper
|
||||||
@ -85,7 +85,7 @@ SPEC CHECKSUMS:
|
|||||||
NSString-Helper: 389265918b2a4c5b0d09f0e03c607e8e5e254dd7
|
NSString-Helper: 389265918b2a4c5b0d09f0e03c607e8e5e254dd7
|
||||||
nv-ios-http-status: b6c2b5fc8656cc19e0d3000dadce2080b99d0e2f
|
nv-ios-http-status: b6c2b5fc8656cc19e0d3000dadce2080b99d0e2f
|
||||||
PEAR-FileManager-iOS: 3bc403f68a53483f5629aa822f4649e40275c4d3
|
PEAR-FileManager-iOS: 3bc403f68a53483f5629aa822f4649e40275c4d3
|
||||||
PNObject: 75d5a262457e538027c6f7b9cbd4f8ee5700f21f
|
PNObject: 1f79df2779559eaad82d9a345bc300eeb947a5d8
|
||||||
PureLayout: 4d550abe49a94f24c2808b9b95db9131685fe4cd
|
PureLayout: 4d550abe49a94f24c2808b9b95db9131685fe4cd
|
||||||
RZDataBinding: 6981e90ddaae2f5e02028323b1043f8c31013109
|
RZDataBinding: 6981e90ddaae2f5e02028323b1043f8c31013109
|
||||||
Specta: 3e1bd89c3517421982dc4d1c992503e48bd5fe66
|
Specta: 3e1bd89c3517421982dc4d1c992503e48bd5fe66
|
||||||
|
|||||||
1
Example/Pods/Headers/Private/PNObject/PNObject+PNObjectDELETEConnection.h
generated
Symbolic link
1
Example/Pods/Headers/Private/PNObject/PNObject+PNObjectDELETEConnection.h
generated
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../../../../PNObject/Classes/PNObject+PNObjectDELETEConnection.h
|
||||||
1
Example/Pods/Headers/Private/PNObject/PNObject+PNObjectGETConnection.h
generated
Symbolic link
1
Example/Pods/Headers/Private/PNObject/PNObject+PNObjectGETConnection.h
generated
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../../../../PNObject/Classes/PNObject+PNObjectGETConnection.h
|
||||||
1
Example/Pods/Headers/Private/PNObject/PNObject+PNObjectPOSTConnection.h
generated
Symbolic link
1
Example/Pods/Headers/Private/PNObject/PNObject+PNObjectPOSTConnection.h
generated
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../../../../PNObject/Classes/PNObject+PNObjectPOSTConnection.h
|
||||||
1
Example/Pods/Headers/Public/PNObject/PNObject+PNObjectDELETEConnection.h
generated
Symbolic link
1
Example/Pods/Headers/Public/PNObject/PNObject+PNObjectDELETEConnection.h
generated
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../../../../PNObject/Classes/PNObject+PNObjectDELETEConnection.h
|
||||||
1
Example/Pods/Headers/Public/PNObject/PNObject+PNObjectGETConnection.h
generated
Symbolic link
1
Example/Pods/Headers/Public/PNObject/PNObject+PNObjectGETConnection.h
generated
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../../../../PNObject/Classes/PNObject+PNObjectGETConnection.h
|
||||||
1
Example/Pods/Headers/Public/PNObject/PNObject+PNObjectPOSTConnection.h
generated
Symbolic link
1
Example/Pods/Headers/Public/PNObject/PNObject+PNObjectPOSTConnection.h
generated
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../../../../PNObject/Classes/PNObject+PNObjectPOSTConnection.h
|
||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "PNObject",
|
"name": "PNObject",
|
||||||
"version": "1.5",
|
"version": "2.0",
|
||||||
"summary": "PNObject is a simple replica of the more complex ParseObject",
|
"summary": "PNObject is a simple replica of the more complex ParseObject",
|
||||||
"homepage": "https://github.com/giuseppenucifora/PNObject",
|
"homepage": "https://github.com/giuseppenucifora/PNObject",
|
||||||
"license": {
|
"license": {
|
||||||
@ -12,7 +12,7 @@
|
|||||||
},
|
},
|
||||||
"source": {
|
"source": {
|
||||||
"git": "https://github.com/giuseppenucifora/PNObject.git",
|
"git": "https://github.com/giuseppenucifora/PNObject.git",
|
||||||
"tag": "1.5"
|
"tag": "2.0"
|
||||||
},
|
},
|
||||||
"platforms": {
|
"platforms": {
|
||||||
"ios": "8.0"
|
"ios": "8.0"
|
||||||
|
|||||||
4
Example/Pods/Manifest.lock
generated
4
Example/Pods/Manifest.lock
generated
@ -38,7 +38,7 @@ PODS:
|
|||||||
- NSString-Helper (1.0.6)
|
- NSString-Helper (1.0.6)
|
||||||
- nv-ios-http-status (0.0.1)
|
- nv-ios-http-status (0.0.1)
|
||||||
- PEAR-FileManager-iOS (1.3.1)
|
- PEAR-FileManager-iOS (1.3.1)
|
||||||
- PNObject (1.5):
|
- PNObject (2.0):
|
||||||
- AFNetworking
|
- AFNetworking
|
||||||
- CodFis-Helper
|
- CodFis-Helper
|
||||||
- DDDKeychainWrapper
|
- DDDKeychainWrapper
|
||||||
@ -85,7 +85,7 @@ SPEC CHECKSUMS:
|
|||||||
NSString-Helper: 389265918b2a4c5b0d09f0e03c607e8e5e254dd7
|
NSString-Helper: 389265918b2a4c5b0d09f0e03c607e8e5e254dd7
|
||||||
nv-ios-http-status: b6c2b5fc8656cc19e0d3000dadce2080b99d0e2f
|
nv-ios-http-status: b6c2b5fc8656cc19e0d3000dadce2080b99d0e2f
|
||||||
PEAR-FileManager-iOS: 3bc403f68a53483f5629aa822f4649e40275c4d3
|
PEAR-FileManager-iOS: 3bc403f68a53483f5629aa822f4649e40275c4d3
|
||||||
PNObject: 75d5a262457e538027c6f7b9cbd4f8ee5700f21f
|
PNObject: 1f79df2779559eaad82d9a345bc300eeb947a5d8
|
||||||
PureLayout: 4d550abe49a94f24c2808b9b95db9131685fe4cd
|
PureLayout: 4d550abe49a94f24c2808b9b95db9131685fe4cd
|
||||||
RZDataBinding: 6981e90ddaae2f5e02028323b1043f8c31013109
|
RZDataBinding: 6981e90ddaae2f5e02028323b1043f8c31013109
|
||||||
Specta: 3e1bd89c3517421982dc4d1c992503e48bd5fe66
|
Specta: 3e1bd89c3517421982dc4d1c992503e48bd5fe66
|
||||||
|
|||||||
1777
Example/Pods/Pods.xcodeproj/project.pbxproj
generated
1777
Example/Pods/Pods.xcodeproj/project.pbxproj
generated
File diff suppressed because it is too large
Load Diff
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
Pod::Spec.new do |s|
|
Pod::Spec.new do |s|
|
||||||
s.name = 'PNObject'
|
s.name = 'PNObject'
|
||||||
s.version = '1.5'
|
s.version = '2.0'
|
||||||
s.summary = 'PNObject is a simple replica of the more complex ParseObject'
|
s.summary = 'PNObject is a simple replica of the more complex ParseObject'
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -25,14 +25,14 @@
|
|||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure;
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure;
|
||||||
|
|
||||||
+ (void) DELETEWithEndpointAction:(NSString * _Nonnull) endPoint
|
+ (void) DELETEWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
authMode:(OAuthMode) authMode
|
oauthMode:(OAuthMode) oauthMode
|
||||||
parameters:(NSDictionary * _Nullable) parameters
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
||||||
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure;
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure;
|
||||||
|
|
||||||
+ (void) DELETEWithEndpointAction:(NSString * _Nonnull) endPoint
|
+ (void) DELETEWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
authMode:(OAuthMode) authMode
|
oauthMode:(OAuthMode) oauthMode
|
||||||
parameters:(NSDictionary * _Nullable) parameters
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
retries:(NSInteger) retries
|
retries:(NSInteger) retries
|
||||||
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
||||||
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
||||||
return [self DELETEWithEndpointAction:endPoint authMode:OAuthModeClientCredential parameters:parameters retries:MAX_RETRIES progress:uploadProgress success:success failure:failure];
|
return [self DELETEWithEndpointAction:endPoint oauthMode:OAuthModeNo parameters:parameters retries:MAX_RETRIES progress:uploadProgress success:success failure:failure];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (void) DELETEWithEndpointAction:(NSString * _Nonnull) endPoint
|
+ (void) DELETEWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
@ -31,29 +31,28 @@
|
|||||||
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
||||||
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
||||||
return [self DELETEWithEndpointAction:endPoint authMode:OAuthModeClientCredential parameters:parameters retries:retries progress:uploadProgress success:success failure:failure];
|
return [self DELETEWithEndpointAction:endPoint oauthMode:OAuthModeNo parameters:parameters retries:retries progress:uploadProgress success:success failure:failure];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (void) DELETEWithEndpointAction:(NSString * _Nonnull) endPoint
|
+ (void) DELETEWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
authMode:(OAuthMode) authMode
|
oauthMode:(OAuthMode) oauthMode
|
||||||
parameters:(NSDictionary * _Nullable) parameters
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
||||||
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
||||||
return [self DELETEWithEndpointAction:endPoint authMode:authMode parameters:parameters retries:MAX_RETRIES progress:uploadProgress success:success failure:failure];
|
return [self DELETEWithEndpointAction:endPoint oauthMode:oauthMode parameters:parameters retries:MAX_RETRIES progress:uploadProgress success:success failure:failure];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (void) DELETEWithEndpointAction:(NSString * _Nonnull) endPoint
|
+ (void) DELETEWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
authMode:(OAuthMode) authMode
|
oauthMode:(OAuthMode) oauthMode
|
||||||
parameters:(NSDictionary * _Nullable) parameters
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
retries:(NSInteger) retries
|
retries:(NSInteger) retries
|
||||||
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
||||||
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
||||||
|
|
||||||
|
if([[PNObjectConfig sharedInstance] setCredentialTokenForOauthMode:oauthMode]){
|
||||||
|
|
||||||
|
|
||||||
if ([[PNObjectConfig sharedInstance] currentOauthUserCredential] && ![[[PNObjectConfig sharedInstance] currentOauthUserCredential] isExpired]) {
|
|
||||||
[[[PNObjectConfig sharedInstance] manager] DELETE:[[[PNObjectConfig sharedInstance] endPointUrl] stringByAppendingFormat:@"%@",endPoint]
|
[[[PNObjectConfig sharedInstance] manager] DELETE:[[[PNObjectConfig sharedInstance] endPointUrl] stringByAppendingFormat:@"%@",endPoint]
|
||||||
parameters:parameters
|
parameters:parameters
|
||||||
success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
|
success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
|
||||||
@ -65,7 +64,7 @@
|
|||||||
[[PNObjectConfig sharedInstance] refreshTokenWithBlockSuccess:^(BOOL refreshSuccess) {
|
[[PNObjectConfig sharedInstance] refreshTokenWithBlockSuccess:^(BOOL refreshSuccess) {
|
||||||
|
|
||||||
[self DELETEWithEndpointAction:endPoint
|
[self DELETEWithEndpointAction:endPoint
|
||||||
authMode:authMode
|
oauthMode:oauthMode
|
||||||
parameters:parameters
|
parameters:parameters
|
||||||
retries:retries-1
|
retries:retries-1
|
||||||
progress:uploadProgress
|
progress:uploadProgress
|
||||||
@ -87,15 +86,16 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
[[PNObjectConfig sharedInstance] refreshTokenWithBlockSuccess:^(BOOL refreshSuccess) {
|
[[PNObjectConfig sharedInstance] refreshTokenForOauthMode:oauthMode WithBlockSuccess:^(BOOL refreshSuccess) {
|
||||||
|
|
||||||
[self DELETEWithEndpointAction:endPoint
|
[self DELETEWithEndpointAction:endPoint
|
||||||
authMode:authMode
|
oauthMode:oauthMode
|
||||||
parameters:parameters
|
parameters:parameters
|
||||||
retries:retries-1
|
retries:retries-1
|
||||||
progress:uploadProgress
|
progress:uploadProgress
|
||||||
success:success
|
success:success
|
||||||
failure:failure];
|
failure:failure];
|
||||||
|
|
||||||
} failure:^(NSError * _Nonnull error) {
|
} failure:^(NSError * _Nonnull error) {
|
||||||
|
|
||||||
if (failure) {
|
if (failure) {
|
||||||
@ -105,18 +105,4 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (BOOL) checkCredential {
|
|
||||||
|
|
||||||
switch ([[PNObjectConfig sharedInstance] oauthMode]) {
|
|
||||||
case OAuthModeClientCredential:
|
|
||||||
return NO;
|
|
||||||
break;
|
|
||||||
case OAuthModePassword:
|
|
||||||
default:
|
|
||||||
return NO;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return YES;
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@ -33,20 +33,20 @@
|
|||||||
|
|
||||||
|
|
||||||
+ (void) GETWithEndpointAction:(NSString * _Nonnull) endPoint
|
+ (void) GETWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
authMode:(OAuthMode) authMode
|
oauthMode:(OAuthMode) oauthMode
|
||||||
progress:(nullable void (^)(NSProgress * _Nullable downloadProgress)) downloadProgress
|
progress:(nullable void (^)(NSProgress * _Nullable downloadProgress)) downloadProgress
|
||||||
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure;
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure;
|
||||||
|
|
||||||
+ (void) GETWithEndpointAction:(NSString * _Nonnull) endPoint
|
+ (void) GETWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
authMode:(OAuthMode) authMode
|
oauthMode:(OAuthMode) oauthMode
|
||||||
parameters:(NSDictionary * _Nullable) parameters
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
progress:(nullable void (^)(NSProgress * _Nullable downloadProgress)) downloadProgress
|
progress:(nullable void (^)(NSProgress * _Nullable downloadProgress)) downloadProgress
|
||||||
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure;
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure;
|
||||||
|
|
||||||
+ (void) GETWithEndpointAction:(NSString * _Nonnull) endPoint
|
+ (void) GETWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
authMode:(OAuthMode) authMode
|
oauthMode:(OAuthMode) oauthMode
|
||||||
parameters:(NSDictionary * _Nullable) parameters
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
retries:(NSInteger) retries
|
retries:(NSInteger) retries
|
||||||
progress:(nullable void (^)(NSProgress * _Nullable downloadProgress)) downloadProgress
|
progress:(nullable void (^)(NSProgress * _Nullable downloadProgress)) downloadProgress
|
||||||
|
|||||||
@ -32,7 +32,7 @@
|
|||||||
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
||||||
|
|
||||||
return [self GETWithEndpointAction:endPoint authMode:OAuthModeClientCredential parameters:parameters retries:MAX_RETRIES progress:downloadProgress success:success failure:failure];
|
return [self GETWithEndpointAction:endPoint oauthMode:OAuthModeClientCredential parameters:parameters retries:MAX_RETRIES progress:downloadProgress success:success failure:failure];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (void) GETWithEndpointAction:(NSString * _Nonnull) endPoint
|
+ (void) GETWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
@ -42,35 +42,35 @@
|
|||||||
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
||||||
|
|
||||||
return [self GETWithEndpointAction:endPoint authMode:OAuthModeClientCredential parameters:parameters retries:retries progress:downloadProgress success:success failure:failure];
|
return [self GETWithEndpointAction:endPoint oauthMode:OAuthModeClientCredential parameters:parameters retries:retries progress:downloadProgress success:success failure:failure];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (void) GETWithEndpointAction:(NSString * _Nonnull) endPoint
|
+ (void) GETWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
authMode:(OAuthMode) authMode
|
oauthMode:(OAuthMode) oauthMode
|
||||||
progress:(nullable void (^)(NSProgress * _Nullable downloadProgress)) downloadProgress
|
progress:(nullable void (^)(NSProgress * _Nullable downloadProgress)) downloadProgress
|
||||||
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
||||||
return [self GETWithEndpointAction:endPoint authMode:authMode parameters:nil retries:MAX_RETRIES progress:downloadProgress success:success failure:failure];
|
return [self GETWithEndpointAction:endPoint oauthMode:oauthMode parameters:nil retries:MAX_RETRIES progress:downloadProgress success:success failure:failure];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (void) GETWithEndpointAction:(NSString * _Nonnull) endPoint
|
+ (void) GETWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
authMode:(OAuthMode) authMode
|
oauthMode:(OAuthMode) oauthMode
|
||||||
parameters:(NSDictionary * _Nullable) parameters
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
progress:(nullable void (^)(NSProgress * _Nullable downloadProgress)) downloadProgress
|
progress:(nullable void (^)(NSProgress * _Nullable downloadProgress)) downloadProgress
|
||||||
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
||||||
return [self GETWithEndpointAction:endPoint authMode:authMode parameters:parameters retries:MAX_RETRIES progress:downloadProgress success:success failure:failure];
|
return [self GETWithEndpointAction:endPoint oauthMode:oauthMode parameters:parameters retries:MAX_RETRIES progress:downloadProgress success:success failure:failure];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (void) GETWithEndpointAction:(NSString * _Nonnull) endPoint
|
+ (void) GETWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
authMode:(OAuthMode) authMode
|
oauthMode:(OAuthMode) oauthMode
|
||||||
parameters:(NSDictionary * _Nullable) parameters
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
retries:(NSInteger) retries
|
retries:(NSInteger) retries
|
||||||
progress:(nullable void (^)(NSProgress * _Nullable downloadProgress)) downloadProgress
|
progress:(nullable void (^)(NSProgress * _Nullable downloadProgress)) downloadProgress
|
||||||
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
||||||
|
|
||||||
if ([[PNObjectConfig sharedInstance] currentOauthClientCredential] && ![[[PNObjectConfig sharedInstance] currentOauthClientCredential] isExpired]) {
|
if([[PNObjectConfig sharedInstance] setCredentialTokenForOauthMode:oauthMode]){
|
||||||
[[[PNObjectConfig sharedInstance] manager] GET:[[[PNObjectConfig sharedInstance] endPointUrl] stringByAppendingFormat:@"%@",endPoint] parameters:parameters progress:downloadProgress success:^(NSURLSessionDataTask *task, id responseObject) {
|
[[[PNObjectConfig sharedInstance] manager] GET:[[[PNObjectConfig sharedInstance] endPointUrl] stringByAppendingFormat:@"%@",endPoint] parameters:parameters progress:downloadProgress success:^(NSURLSessionDataTask *task, id responseObject) {
|
||||||
|
|
||||||
if (success) {
|
if (success) {
|
||||||
@ -82,7 +82,7 @@
|
|||||||
[[PNObjectConfig sharedInstance] refreshTokenWithBlockSuccess:^(BOOL refreshSuccess) {
|
[[PNObjectConfig sharedInstance] refreshTokenWithBlockSuccess:^(BOOL refreshSuccess) {
|
||||||
|
|
||||||
return [self GETWithEndpointAction:endPoint
|
return [self GETWithEndpointAction:endPoint
|
||||||
authMode:authMode
|
oauthMode:oauthMode
|
||||||
parameters:parameters
|
parameters:parameters
|
||||||
retries:retries-1
|
retries:retries-1
|
||||||
progress:downloadProgress
|
progress:downloadProgress
|
||||||
@ -102,10 +102,10 @@
|
|||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
[[PNObjectConfig sharedInstance] refreshTokenWithBlockSuccess:^(BOOL refreshSuccess) {
|
[[PNObjectConfig sharedInstance] refreshTokenForOauthMode:oauthMode WithBlockSuccess:^(BOOL refreshSuccess) {
|
||||||
|
|
||||||
return [self GETWithEndpointAction:endPoint
|
return [self GETWithEndpointAction:endPoint
|
||||||
authMode:authMode
|
oauthMode:oauthMode
|
||||||
parameters:parameters
|
parameters:parameters
|
||||||
retries:retries-1
|
retries:retries-1
|
||||||
progress:downloadProgress
|
progress:downloadProgress
|
||||||
|
|||||||
@ -11,9 +11,7 @@
|
|||||||
|
|
||||||
@interface PNObject (PNObjectPOSTConnection)
|
@interface PNObject (PNObjectPOSTConnection)
|
||||||
|
|
||||||
#pragma mark - GET
|
#pragma mark - POST
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
parameters:(NSDictionary * _Nullable) parameters
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
@ -29,37 +27,24 @@
|
|||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure;
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure;
|
||||||
|
|
||||||
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
formData:(NSArray * _Nullable) postFormData
|
oauthMode:(OAuthMode) oauthMode
|
||||||
parameters:(NSDictionary * _Nullable) parameters
|
|
||||||
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
|
||||||
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
|
||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure;
|
|
||||||
|
|
||||||
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
|
||||||
formData:(NSArray * _Nullable) postFormData
|
|
||||||
parameters:(NSDictionary * _Nullable) parameters
|
|
||||||
retries:(NSInteger) retries
|
|
||||||
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
|
||||||
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
|
||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure;
|
|
||||||
|
|
||||||
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
|
||||||
authMode:(OAuthMode) authMode
|
|
||||||
parameters:(NSDictionary * _Nullable) parameters
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
progress:(nullable void (^)(NSProgress * _Nullable uploadProgress)) uploadProgress
|
progress:(nullable void (^)(NSProgress * _Nullable uploadProgress)) uploadProgress
|
||||||
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure;
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure;
|
||||||
|
|
||||||
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
authMode:(OAuthMode) authMode
|
oauthMode:(OAuthMode) oauthMode
|
||||||
parameters:(NSDictionary * _Nullable) parameters
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
retries:(NSInteger) retries
|
retries:(NSInteger) retries
|
||||||
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
||||||
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure;
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure;
|
||||||
|
|
||||||
|
|
||||||
|
#pragma mark - FORM DATA
|
||||||
|
|
||||||
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
authMode:(OAuthMode) authMode
|
|
||||||
formData:(NSArray * _Nullable) postFormData
|
formData:(NSArray * _Nullable) postFormData
|
||||||
parameters:(NSDictionary * _Nullable) parameters
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
||||||
@ -67,7 +52,23 @@
|
|||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure;
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure;
|
||||||
|
|
||||||
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
authMode:(OAuthMode) authMode
|
formData:(NSArray * _Nullable) postFormData
|
||||||
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
|
retries:(NSInteger) retries
|
||||||
|
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
||||||
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure;
|
||||||
|
|
||||||
|
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
|
oauthMode:(OAuthMode) oauthMode
|
||||||
|
formData:(NSArray * _Nullable) postFormData
|
||||||
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
|
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
||||||
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure;
|
||||||
|
|
||||||
|
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
|
oauthMode:(OAuthMode) oauthMode
|
||||||
formData:(NSArray * _Nullable) postFormData
|
formData:(NSArray * _Nullable) postFormData
|
||||||
parameters:(NSDictionary * _Nullable) parameters
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
retries:(NSInteger) retries
|
retries:(NSInteger) retries
|
||||||
|
|||||||
@ -23,11 +23,30 @@
|
|||||||
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
||||||
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
||||||
return [self POSTWithEndpointAction:endPoint authMode:OAuthModeClientCredential parameters:parameters retries:MAX_RETRIES progress:uploadProgress success:success failure:failure];
|
return [self POSTWithEndpointAction:endPoint oauthMode:OAuthModeClientCredential parameters:parameters retries:MAX_RETRIES progress:uploadProgress success:success failure:failure];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
authMode:(OAuthMode) authMode
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
|
retries:(NSInteger) retries
|
||||||
|
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
||||||
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
||||||
|
return [self POSTWithEndpointAction:endPoint oauthMode:OAuthModeClientCredential parameters:parameters retries:retries progress:uploadProgress success:success failure:failure];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
|
oauthMode:(OAuthMode) oauthMode
|
||||||
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
|
progress:(nullable void (^)(NSProgress * _Nullable uploadProgress)) uploadProgress
|
||||||
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
||||||
|
return [self POSTWithEndpointAction:endPoint oauthMode:oauthMode parameters:parameters retries:MAX_RETRIES progress:uploadProgress success:success failure:failure];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
|
oauthMode:(OAuthMode) oauthMode
|
||||||
parameters:(NSDictionary * _Nullable) parameters
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
retries:(NSInteger) retries
|
retries:(NSInteger) retries
|
||||||
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
||||||
@ -74,17 +93,18 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
authMode:(OAuthMode) authMode
|
|
||||||
formData:(NSArray * _Nullable) postFormData
|
formData:(NSArray * _Nullable) postFormData
|
||||||
parameters:(NSDictionary * _Nullable) parameters
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
||||||
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
||||||
|
|
||||||
return [self POSTWithEndpointAction:endPoint authMode:OAuthModeClientCredential formData:postFormData parameters:parameters retries:MAX_RETRIES progress:uploadProgress success:success failure:failure];
|
return [self POSTWithEndpointAction:endPoint oauthMode:OAuthModeClientCredential formData:postFormData parameters:parameters retries:MAX_RETRIES progress:uploadProgress success:success failure:failure];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
formData:(NSArray * _Nullable) postFormData
|
formData:(NSArray * _Nullable) postFormData
|
||||||
parameters:(NSDictionary * _Nullable) parameters
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
@ -92,8 +112,30 @@
|
|||||||
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
||||||
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
||||||
|
return [self POSTWithEndpointAction:endPoint oauthMode:OAuthModeClientCredential formData:postFormData parameters:parameters retries:retries progress:uploadProgress success:success failure:failure];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
|
oauthMode:(OAuthMode) oauthMode
|
||||||
|
formData:(NSArray * _Nullable) postFormData
|
||||||
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
|
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
||||||
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
||||||
|
return [self POSTWithEndpointAction:endPoint oauthMode:oauthMode formData:postFormData parameters:parameters retries:MAX_RETRIES progress:uploadProgress success:success failure:failure];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void) POSTWithEndpointAction:(NSString * _Nonnull) endPoint
|
||||||
|
oauthMode:(OAuthMode) oauthMode
|
||||||
|
formData:(NSArray * _Nullable) postFormData
|
||||||
|
parameters:(NSDictionary * _Nullable) parameters
|
||||||
|
retries:(NSInteger) retries
|
||||||
|
progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
|
||||||
|
success:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject))success
|
||||||
|
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error))failure {
|
||||||
|
|
||||||
if ([[PNObjectConfig sharedInstance] currentOauthUserCredential] && ![[[PNObjectConfig sharedInstance] currentOauthUserCredential] isExpired]) {
|
if([[PNObjectConfig sharedInstance] setCredentialTokenForOauthMode:oauthMode]){
|
||||||
|
|
||||||
[[[PNObjectConfig sharedInstance] manager] POST:[[[PNObjectConfig sharedInstance] endPointUrl] stringByAppendingFormat:@"%@",endPoint]
|
[[[PNObjectConfig sharedInstance] manager] POST:[[[PNObjectConfig sharedInstance] endPointUrl] stringByAppendingFormat:@"%@",endPoint]
|
||||||
parameters:parameters
|
parameters:parameters
|
||||||
constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
|
constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
|
||||||
@ -130,9 +172,9 @@
|
|||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
[[PNObjectConfig sharedInstance] refreshTokenWithBlockSuccess:^(BOOL refreshSuccess) {
|
[[PNObjectConfig sharedInstance] refreshTokenForOauthMode:oauthMode WithBlockSuccess:^(BOOL refreshSuccess) {
|
||||||
|
|
||||||
return [self POSTWithEndpointAction:endPoint formData:postFormData parameters:parameters retries:retries-1 progress:uploadProgress success:success failure:failure];
|
return [self POSTWithEndpointAction:endPoint oauthMode:oauthMode formData:postFormData parameters:parameters retries:retries-1 progress:uploadProgress success:success failure:failure];
|
||||||
} failure:^(NSError * _Nonnull error) {
|
} failure:^(NSError * _Nonnull error) {
|
||||||
|
|
||||||
if (failure) {
|
if (failure) {
|
||||||
|
|||||||
@ -39,8 +39,6 @@ extern NSString* _Nonnull const PNObjectLocalNotificationPNInstallationUserDelet
|
|||||||
|
|
||||||
extern NSString* _Nonnull const BaseUrl;
|
extern NSString* _Nonnull const BaseUrl;
|
||||||
extern NSString* _Nonnull const EndpointPath;
|
extern NSString* _Nonnull const EndpointPath;
|
||||||
extern NSString* _Nonnull const OAuthEndpointPath;
|
|
||||||
extern NSString* _Nonnull const OAuthEndpointAction;
|
|
||||||
|
|
||||||
extern NSString* _Nonnull const EnvironmentProduction;
|
extern NSString* _Nonnull const EnvironmentProduction;
|
||||||
extern NSString* _Nonnull const EnvironmentStage;
|
extern NSString* _Nonnull const EnvironmentStage;
|
||||||
@ -49,8 +47,11 @@ extern NSString* _Nonnull const EnvironmentDevelopment;
|
|||||||
extern NSString* _Nonnull const Client_ID;
|
extern NSString* _Nonnull const Client_ID;
|
||||||
extern NSString* _Nonnull const Client_Secret;
|
extern NSString* _Nonnull const Client_Secret;
|
||||||
|
|
||||||
extern NSString* _Nonnull const OAuthClient_ID;
|
extern NSString* _Nonnull const Client_Credential_ID;
|
||||||
extern NSString* _Nonnull const OAuthClient_Secret;
|
extern NSString* _Nonnull const Client_Credential_Secret;
|
||||||
|
|
||||||
|
extern NSString* _Nonnull const Client_Username;
|
||||||
|
extern NSString* _Nonnull const Client_Password;
|
||||||
|
|
||||||
typedef NS_ENUM(NSInteger, OAuthMode) {
|
typedef NS_ENUM(NSInteger, OAuthMode) {
|
||||||
OAuthModeNo = 0,
|
OAuthModeNo = 0,
|
||||||
@ -95,36 +96,6 @@ typedef NS_ENUM(NSInteger, OAuthMode) {
|
|||||||
*/
|
*/
|
||||||
+ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary * _Nonnull) endpointUrlsForEnvironments andUserSubclass:(Class _Nonnull) userSubClass;
|
+ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary * _Nonnull) endpointUrlsForEnvironments andUserSubclass:(Class _Nonnull) userSubClass;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @param endpointUrlsForEnvironments
|
|
||||||
* For example,
|
|
||||||
* @{ PNObjectConfigDevelopment : @"https://development.it/api/v1",
|
|
||||||
* PNObjectConfigEnvStage : @"https://stage.it/api/v1",
|
|
||||||
* PNObjectConfigEnvProduction : @"https://production.it/api/v1"
|
|
||||||
* }
|
|
||||||
* @param oauthMode <#oauthEnabled description#>
|
|
||||||
*
|
|
||||||
* @return singleton
|
|
||||||
*/
|
|
||||||
+ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary * _Nonnull) endpointUrlsForEnvironments withOauthMode:(OAuthMode) oauthMode;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <#Description#>
|
|
||||||
*
|
|
||||||
* @param endpointUrlsForEnvironments
|
|
||||||
* For example,
|
|
||||||
* @{ PNObjectConfigDevelopment : @"https://development.it/api/v1",
|
|
||||||
* PNObjectConfigEnvStage : @"https://stage.it/api/v1",
|
|
||||||
* PNObjectConfigEnvProduction : @"https://production.it/api/v1"
|
|
||||||
* }
|
|
||||||
* @param userSubClass <#userSubClass description#>
|
|
||||||
* @param oauthMode <#oauthEnabled description#>
|
|
||||||
*
|
|
||||||
* @return <#return value description#>
|
|
||||||
*/
|
|
||||||
+ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary * _Nonnull) endpointUrlsForEnvironments userSubclass:(Class _Nonnull) userSubClass withOauthMode:(OAuthMode) oauthMode;
|
|
||||||
/**
|
/**
|
||||||
* <#Description#>
|
* <#Description#>
|
||||||
*
|
*
|
||||||
@ -151,12 +122,17 @@ typedef NS_ENUM(NSInteger, OAuthMode) {
|
|||||||
- (void) removeHTTPHeaderValueForKey:(NSString * _Nonnull) key;
|
- (void) removeHTTPHeaderValueForKey:(NSString * _Nonnull) key;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
- (void) setClientID:(NSString * _Nonnull) clientID clientSecret:(NSString* _Nonnull) clientSecret oAuthEndpointAction:(NSString* _Nonnull) oAuthEndpointAction forEnv:(NSString * _Nonnull) environment;
|
*
|
||||||
|
*
|
||||||
- (void) setOauthClientID:(NSString * _Nonnull) oauthClientID oauthClientSecret:(NSString* _Nonnull) oauthClientSecret oAuthEndpointAction:(NSString* _Nonnull) oAuthEndpointAction forEnv:(NSString *) environment;
|
* @param clientID Client ID for selected environment
|
||||||
|
* @param clientSecret Client Secret for selected environment
|
||||||
- (void) setOauthUserName:(NSString * _Nonnull)oauthUserName oauthPassword:(NSString* _Nonnull) oauthPassword oAuthEndpointAction:(NSString* _Nonnull) oAuthEndpointAction forEnv:(NSString * _Nonnull) environment;
|
* @param oAuthEndpointAction endpoint action. You can pass specia string "%@" to autoset EndpointPath to Oauth endpointPath
|
||||||
|
* @param oauthMode OauthMode
|
||||||
|
* @param environment environment
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
- (void) setClientID:(NSString * _Nonnull) clientID clientSecret:(NSString* _Nonnull) clientSecret oAuthEndpointAction:(NSString* _Nonnull) oAuthEndpointAction oauthMode:(OAuthMode) oauthMode forEnv:(NSString* _Nonnull) environment;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <#Description#>
|
* <#Description#>
|
||||||
@ -232,22 +208,40 @@ typedef NS_ENUM(NSInteger, OAuthMode) {
|
|||||||
withBlockSuccess:(nullable void (^)(BOOL refreshSuccess))success
|
withBlockSuccess:(nullable void (^)(BOOL refreshSuccess))success
|
||||||
failure:(nullable void (^)(NSError * _Nonnull error))failure;
|
failure:(nullable void (^)(NSError * _Nonnull error))failure;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <#Description#>
|
||||||
|
*/
|
||||||
- (void) refreshTokenForUserWithFacebookId:(NSString * _Nonnull) facebookId
|
- (void) refreshTokenForUserWithFacebookId:(NSString * _Nonnull) facebookId
|
||||||
facebookToken:(NSString * _Nonnull) facebookToken
|
facebookToken:(NSString * _Nonnull) facebookToken
|
||||||
withBlockSuccess:(nullable void (^)(BOOL refreshSuccess))success
|
withBlockSuccess:(nullable void (^)(BOOL refreshSuccess))success
|
||||||
failure:(nullable void (^)(NSError * _Nonnull error))failure;
|
failure:(nullable void (^)(NSError * _Nonnull error))failure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <#Description#>
|
* <#Description#>
|
||||||
*/
|
*/
|
||||||
- (BOOL) resetToken;
|
- (void) refreshTokenForOauthMode:(OAuthMode) oauthMode
|
||||||
|
WithBlockSuccess:(nullable void (^)(BOOL refreshSuccess))success
|
||||||
|
failure:(nullable void (^)(NSError * _Nonnull error))failure;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <#Description#>
|
||||||
|
*/
|
||||||
|
- (BOOL) resetTokenForOauthMode:(OAuthMode) oauthMode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <#Description#>
|
||||||
|
*/
|
||||||
|
- (void) resetAllTokens;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <#Description#>
|
||||||
|
*/
|
||||||
|
- (BOOL) setCredentialTokenForOauthMode:(OAuthMode) oauthMode;
|
||||||
|
|
||||||
///--------------------------------------
|
///--------------------------------------
|
||||||
#pragma mark - PNObjectConfig Properties
|
#pragma mark - PNObjectConfig Properties
|
||||||
///--------------------------------------
|
///--------------------------------------
|
||||||
|
|
||||||
@property (nonatomic, readonly) OAuthMode oauthMode;
|
|
||||||
|
|
||||||
@property (nonatomic, readonly, nonnull) Class userSubClass;
|
@property (nonatomic, readonly, nonnull) Class userSubClass;
|
||||||
/**
|
/**
|
||||||
* <#Description#>
|
* <#Description#>
|
||||||
@ -257,12 +251,22 @@ typedef NS_ENUM(NSInteger, OAuthMode) {
|
|||||||
/**
|
/**
|
||||||
* <#Description#>
|
* <#Description#>
|
||||||
*/
|
*/
|
||||||
@property (nonatomic, strong, readonly, nonnull) AFJSONRequestSerializer *jsonSerializer;
|
@property (nonatomic, strong, readonly, nonnull) AFJSONRequestSerializer *managerJsonRequestSerializer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <#Description#>
|
* <#Description#>
|
||||||
*/
|
*/
|
||||||
@property (nonatomic, strong, readonly, nonnull) AFHTTPRequestSerializer *httpSerializer;
|
@property (nonatomic, strong, readonly, nonnull) AFHTTPRequestSerializer *managerHttpRequestSerializer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <#Description#>
|
||||||
|
*/
|
||||||
|
@property (nonatomic, strong, readonly, nonnull) AFJSONRequestSerializer *oauthJsonRequestSerializer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <#Description#>
|
||||||
|
*/
|
||||||
|
@property (nonatomic, strong, readonly, nonnull) AFHTTPRequestSerializer *oauthHttpRequestSerializer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <#Description#>
|
* <#Description#>
|
||||||
|
|||||||
@ -47,15 +47,14 @@ NSString* const EnvironmentDevelopment = @"PNObjectConfigDevelopment";
|
|||||||
|
|
||||||
NSString* const BaseUrl = @"base_url";
|
NSString* const BaseUrl = @"base_url";
|
||||||
NSString* const EndpointPath = @"endpoint_path";
|
NSString* const EndpointPath = @"endpoint_path";
|
||||||
NSString* const OAuthEndpointPath = @"oauth_endpoint_path";
|
|
||||||
NSString* const OAuthEndpointAction = @"oauth_endpoint_action";
|
|
||||||
|
|
||||||
NSString* const Client_ID = @"client_id";
|
NSString* const Client_ID = @"oauth_user_credential_client_id";
|
||||||
NSString* const Client_Secret = @"client_secret";
|
NSString* const Client_Secret = @"oauth_user_credential_client_secret";
|
||||||
|
NSString* const Client_EndpointAction = @"oauth_user_credential_endpoint_action";
|
||||||
NSString* const OAuthClient_ID = @"client_id";
|
|
||||||
NSString* const OAuthClient_Secret = @"client_secret";
|
|
||||||
|
|
||||||
|
NSString* const Client_Credential_ID = @"oauth_client_credential_client_id";
|
||||||
|
NSString* const Client_Credential_Secret = @"oauth_client_credential_client_secret";
|
||||||
|
NSString* const Client_CredentialEndpointAction = @"oauth_client_credential_endpoint_action";
|
||||||
|
|
||||||
NSString* const Client_Username = @"client_username";
|
NSString* const Client_Username = @"client_username";
|
||||||
NSString* const Client_Password = @"client_password";
|
NSString* const Client_Password = @"client_password";
|
||||||
@ -66,18 +65,21 @@ NSString* const Client_Password = @"client_password";
|
|||||||
@property (nonatomic, strong) NSMutableDictionary *headerFields;
|
@property (nonatomic, strong) NSMutableDictionary *headerFields;
|
||||||
@property (nonatomic, strong) NSString *currentEnv;
|
@property (nonatomic, strong) NSString *currentEnv;
|
||||||
@property (nonatomic, strong) NSString *currentBaseUrl;
|
@property (nonatomic, strong) NSString *currentBaseUrl;
|
||||||
|
|
||||||
@property (nonatomic, strong) NSString *currentEndPointPath;
|
@property (nonatomic, strong) NSString *currentEndPointPath;
|
||||||
@property (nonatomic, strong) NSString *currentEndPointUrl;
|
@property (nonatomic, strong) NSString *currentEndPointUrl;
|
||||||
@property (nonatomic, strong) NSString *currentOAuthClientID;
|
|
||||||
@property (nonatomic, strong) NSString *currentOAuthClientSecret;
|
|
||||||
|
|
||||||
|
/* Client credential configurations */
|
||||||
|
@property (nonatomic, strong) NSString *currentClientCredenzialEndPointPath;
|
||||||
|
@property (nonatomic, strong) NSString *currentClientCredenzialEndPointUrl;
|
||||||
|
@property (nonatomic, strong) NSString *currentClientCredenzialClientID;
|
||||||
|
@property (nonatomic, strong) NSString *currentClientCredenzialClientSecret;
|
||||||
|
|
||||||
|
/* User credential configuration */
|
||||||
|
@property (nonatomic, strong) NSString *currentUserCredenzialEndPointPath;
|
||||||
|
@property (nonatomic, strong) NSString *currentUserCredenzialEndPointUrl;
|
||||||
|
@property (nonatomic, strong) NSString *currentUserCredenzialClientID;
|
||||||
|
@property (nonatomic, strong) NSString *currentUserCredenzialClientSecret;
|
||||||
|
|
||||||
@property (nonatomic, strong) NSString *currentOauthEndPointPath;
|
|
||||||
@property (nonatomic, strong) NSString *currentOauthEndPointUrl;
|
|
||||||
@property (nonatomic, strong) NSString *currentOauthEndPointAction;
|
|
||||||
@property (nonatomic, strong) NSString *currentClientID;
|
|
||||||
@property (nonatomic, strong) NSString *currentClientSecret;
|
|
||||||
|
|
||||||
@property (nonatomic, strong) NSString *currentOAuthUserName;
|
@property (nonatomic, strong) NSString *currentOAuthUserName;
|
||||||
@property (nonatomic, strong) NSString *currentOAuthPassword;
|
@property (nonatomic, strong) NSString *currentOAuthPassword;
|
||||||
@ -106,24 +108,19 @@ static bool isFirstAccess = YES;
|
|||||||
#pragma mark - Life Cycle
|
#pragma mark - Life Cycle
|
||||||
|
|
||||||
+ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary *) endpointUrlsForEnvironments {
|
+ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary *) endpointUrlsForEnvironments {
|
||||||
return [self initSharedInstanceForEnvironments:endpointUrlsForEnvironments userSubclass:[PNUser class] withOauthMode:OAuthModeClientCredential];
|
return [self initSharedInstanceForEnvironments:endpointUrlsForEnvironments userSubclass:[PNUser class] withoauthMode:OAuthModeClientCredential];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary *)endpointUrlsForEnvironments andUserSubclass:(Class)userSubClass {
|
+ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary *)endpointUrlsForEnvironments andUserSubclass:(Class)userSubClass {
|
||||||
return [self initSharedInstanceForEnvironments:endpointUrlsForEnvironments userSubclass:userSubClass withOauthMode:OAuthModeClientCredential];
|
return [self initSharedInstanceForEnvironments:endpointUrlsForEnvironments userSubclass:userSubClass withoauthMode:OAuthModeClientCredential];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary * _Nonnull) endpointUrlsForEnvironments userSubclass:(Class _Nonnull) userSubClass withoauthMode:(OAuthMode) oauthMode {
|
||||||
+ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary *) endpointUrlsForEnvironments withOauthMode:(OAuthMode) oauthMode {
|
|
||||||
return [self initSharedInstanceForEnvironments:endpointUrlsForEnvironments userSubclass:[PNUser class] withOauthMode:oauthMode];
|
|
||||||
}
|
|
||||||
|
|
||||||
+ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary * _Nonnull) endpointUrlsForEnvironments userSubclass:(Class _Nonnull) userSubClass withOauthMode:(OAuthMode) oauthMode {
|
|
||||||
|
|
||||||
static dispatch_once_t onceToken;
|
static dispatch_once_t onceToken;
|
||||||
dispatch_once(&onceToken, ^{
|
dispatch_once(&onceToken, ^{
|
||||||
isFirstAccess = NO;
|
isFirstAccess = NO;
|
||||||
SINGLETON_PNObjectConfig = [[super allocWithZone:NULL] initWithUserSubclass:userSubClass withOauthMode:oauthMode];
|
SINGLETON_PNObjectConfig = [[super allocWithZone:NULL] initWithUserSubclass:userSubClass];
|
||||||
|
|
||||||
if (SINGLETON_PNObjectConfig) {
|
if (SINGLETON_PNObjectConfig) {
|
||||||
|
|
||||||
@ -145,7 +142,6 @@ static bool isFirstAccess = YES;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
NSAssert([SINGLETON_PNObjectConfig.configuration objectForKey:EnvironmentProduction], @"EnvironmentProduction must be valid endpoint url");
|
NSAssert([SINGLETON_PNObjectConfig.configuration objectForKey:EnvironmentProduction], @"EnvironmentProduction must be valid endpoint url");
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -177,7 +173,7 @@ static bool isFirstAccess = YES;
|
|||||||
return [[PNObjectConfig alloc] init];
|
return [[PNObjectConfig alloc] init];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (id) initWithUserSubclass:(Class _Nonnull) userSubClass withOauthMode:(OAuthMode) oauthMode
|
- (id) initWithUserSubclass:(Class _Nonnull) userSubClass
|
||||||
{
|
{
|
||||||
if(SINGLETON_PNObjectConfig){
|
if(SINGLETON_PNObjectConfig){
|
||||||
return SINGLETON_PNObjectConfig;
|
return SINGLETON_PNObjectConfig;
|
||||||
@ -188,13 +184,15 @@ static bool isFirstAccess = YES;
|
|||||||
self = [super init];
|
self = [super init];
|
||||||
|
|
||||||
if (self) {
|
if (self) {
|
||||||
_oauthMode = oauthMode;
|
|
||||||
_userSubClass = userSubClass;
|
_userSubClass = userSubClass;
|
||||||
_configuration = [[NSMutableDictionary alloc] init];
|
_configuration = [[NSMutableDictionary alloc] init];
|
||||||
_minPasswordLenght = minPassLenght;
|
_minPasswordLenght = minPassLenght;
|
||||||
_currentEnv = EnvironmentProduction;
|
_currentEnv = EnvironmentProduction;
|
||||||
_jsonSerializer = [AFJSONRequestSerializer serializer];
|
_managerJsonRequestSerializer = [AFJSONRequestSerializer serializer];
|
||||||
_httpSerializer = [AFHTTPRequestSerializer serializer];
|
_managerHttpRequestSerializer = [AFHTTPRequestSerializer serializer];
|
||||||
|
|
||||||
|
_oauthJsonRequestSerializer = [AFJSONRequestSerializer serializer];
|
||||||
|
_oauthHttpRequestSerializer = [AFHTTPRequestSerializer serializer];
|
||||||
|
|
||||||
_headerFields = [[NSMutableDictionary alloc] init];
|
_headerFields = [[NSMutableDictionary alloc] init];
|
||||||
|
|
||||||
@ -207,24 +205,16 @@ static bool isFirstAccess = YES;
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
switch (_oauthMode) {
|
AFOAuthCredential *clientCredential = [AFOAuthCredential retrieveCredentialWithIdentifier:PNObjectServiceClientCredentialIdentifier];
|
||||||
case OAuthModePassword:
|
|
||||||
case OAuthModeClientCredential:
|
if (clientCredential) {
|
||||||
default: {
|
_currentOauthClientCredential = clientCredential;
|
||||||
|
}
|
||||||
AFOAuthCredential *clientCredential = [AFOAuthCredential retrieveCredentialWithIdentifier:PNObjectServiceClientCredentialIdentifier];
|
|
||||||
|
AFOAuthCredential *userCredential = [AFOAuthCredential retrieveCredentialWithIdentifier:PNObjectServiceUserCredentialIdentifier];
|
||||||
if (clientCredential) {
|
|
||||||
_currentOauthClientCredential = clientCredential;
|
if (userCredential) {
|
||||||
}
|
_currentOauthUserCredential = userCredential;
|
||||||
|
|
||||||
AFOAuthCredential *userCredential = [AFOAuthCredential retrieveCredentialWithIdentifier:PNObjectServiceUserCredentialIdentifier];
|
|
||||||
|
|
||||||
if (userCredential) {
|
|
||||||
_currentOauthUserCredential = userCredential;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
@ -235,16 +225,18 @@ static bool isFirstAccess = YES;
|
|||||||
_currentEnv = environment;
|
_currentEnv = environment;
|
||||||
_currentBaseUrl = nil;
|
_currentBaseUrl = nil;
|
||||||
|
|
||||||
|
|
||||||
_currentOauthEndPointPath = nil;
|
|
||||||
_currentOauthEndPointUrl = nil;
|
|
||||||
_currentOAuthClientID = nil;
|
|
||||||
_currentOAuthClientSecret = nil;
|
|
||||||
|
|
||||||
_currentEndPointPath = nil;
|
_currentEndPointPath = nil;
|
||||||
_currentEndPointUrl = nil;
|
_currentEndPointUrl = nil;
|
||||||
_currentClientID = nil;
|
|
||||||
_currentClientSecret = nil;
|
_currentClientCredenzialEndPointPath = nil;
|
||||||
|
_currentClientCredenzialEndPointUrl = nil;
|
||||||
|
_currentClientCredenzialClientID = nil;
|
||||||
|
_currentClientCredenzialClientSecret = nil;
|
||||||
|
|
||||||
|
_currentUserCredenzialEndPointPath = nil;
|
||||||
|
_currentUserCredenzialEndPointUrl = nil;
|
||||||
|
_currentUserCredenzialClientID = nil;
|
||||||
|
_currentUserCredenzialClientSecret = nil;
|
||||||
|
|
||||||
_currentOAuthUserName = nil;
|
_currentOAuthUserName = nil;
|
||||||
_currentOAuthPassword = nil;
|
_currentOAuthPassword = nil;
|
||||||
@ -255,31 +247,35 @@ static bool isFirstAccess = YES;
|
|||||||
|
|
||||||
_currentBaseUrl = [currentEnvConfig objectForKey:BaseUrl];
|
_currentBaseUrl = [currentEnvConfig objectForKey:BaseUrl];
|
||||||
|
|
||||||
|
|
||||||
_currentEndPointPath = ([currentEnvConfig objectForKey:EndpointPath] ? [currentEnvConfig objectForKey:EndpointPath] : @"");
|
_currentEndPointPath = ([currentEnvConfig objectForKey:EndpointPath] ? [currentEnvConfig objectForKey:EndpointPath] : @"");
|
||||||
_currentClientID = [currentEnvConfig objectForKey:Client_ID];
|
|
||||||
_currentClientSecret = [currentEnvConfig objectForKey:Client_Secret];
|
|
||||||
|
|
||||||
_currentEndPointUrl = [_currentBaseUrl stringByAppendingString:_currentEndPointPath];
|
_currentEndPointUrl = [_currentBaseUrl stringByAppendingString:_currentEndPointPath];
|
||||||
|
|
||||||
_currentOauthEndPointAction = [currentEnvConfig objectForKey:OAuthEndpointAction];
|
_currentClientCredenzialClientID = [currentEnvConfig objectForKey:Client_Credential_ID];
|
||||||
|
_currentClientCredenzialClientSecret = [currentEnvConfig objectForKey:Client_Credential_Secret];
|
||||||
|
_currentClientCredenzialEndPointPath = ([currentEnvConfig objectForKey:Client_CredentialEndpointAction] ? [currentEnvConfig objectForKey:Client_CredentialEndpointAction] : @"");
|
||||||
|
|
||||||
if (![currentEnvConfig objectForKey:OAuthClient_ID] || ![currentEnvConfig objectForKey:OAuthClient_Secret]) {
|
if([_currentClientCredenzialEndPointPath containsString:@"%@"]){
|
||||||
_currentOAuthClientID = _currentClientID;
|
_currentClientCredenzialEndPointPath = [NSString stringWithFormat:_currentClientCredenzialEndPointPath,_currentEndPointPath];
|
||||||
_currentOAuthClientSecret = _currentClientSecret;
|
}
|
||||||
|
_currentClientCredenzialEndPointUrl = [_currentBaseUrl stringByAppendingString:_currentClientCredenzialEndPointPath];
|
||||||
|
|
||||||
|
|
||||||
|
if (![currentEnvConfig objectForKey:Client_ID] || ![currentEnvConfig objectForKey:Client_Secret]) {
|
||||||
|
_currentUserCredenzialClientID = _currentClientCredenzialClientID;
|
||||||
|
_currentUserCredenzialClientSecret = _currentClientCredenzialClientSecret;
|
||||||
|
_currentUserCredenzialEndPointPath = _currentClientCredenzialEndPointPath;
|
||||||
|
_currentUserCredenzialEndPointUrl = _currentClientCredenzialEndPointUrl;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
_currentOAuthClientID = [currentEnvConfig objectForKey:OAuthClient_ID];
|
_currentUserCredenzialClientID = [currentEnvConfig objectForKey:Client_ID];
|
||||||
_currentOAuthClientSecret = [currentEnvConfig objectForKey:OAuthClient_Secret];
|
_currentUserCredenzialClientSecret = [currentEnvConfig objectForKey:Client_Secret];
|
||||||
}
|
|
||||||
|
_currentUserCredenzialEndPointPath = [currentEnvConfig objectForKey:Client_EndpointAction];
|
||||||
if (![currentEnvConfig objectForKey:OAuthClient_ID] || ![currentEnvConfig objectForKey:OAuthClient_Secret]) {
|
|
||||||
_currentOauthEndPointPath = _currentEndPointPath;
|
if([_currentUserCredenzialEndPointPath containsString:@"%@"]){
|
||||||
_currentOauthEndPointUrl = _currentEndPointUrl;
|
_currentUserCredenzialEndPointPath = [NSString stringWithFormat:_currentUserCredenzialEndPointPath,_currentEndPointPath];
|
||||||
}
|
}
|
||||||
else {
|
_currentUserCredenzialEndPointUrl = [_currentBaseUrl stringByAppendingString:_currentUserCredenzialEndPointPath];
|
||||||
_currentOauthEndPointPath = ([currentEnvConfig objectForKey:OAuthEndpointPath] ? [currentEnvConfig objectForKey:OAuthEndpointPath] : @"");
|
|
||||||
_currentOauthEndPointUrl = [_currentBaseUrl stringByAppendingString:_currentOauthEndPointPath];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -291,15 +287,20 @@ static bool isFirstAccess = YES;
|
|||||||
|
|
||||||
NSLogDebug(@"%@",[[_configuration objectForKey:_currentEnv] objectForKey:BaseUrl]);
|
NSLogDebug(@"%@",[[_configuration objectForKey:_currentEnv] objectForKey:BaseUrl]);
|
||||||
|
|
||||||
NSAssert(_currentEndPointUrl,@"Selected environment generate error. Please check configuration");
|
NSAssert(_currentUserCredenzialEndPointUrl,@"Selected environment generate error. Please check configuration");
|
||||||
|
|
||||||
if (_currentOAuthClientID && _currentOAuthClientSecret) {
|
if (_currentClientCredenzialClientID && _currentClientCredenzialClientSecret) {
|
||||||
[self clientCredentialAuthManager];
|
[self clientCredentialAuthManager];
|
||||||
[self userCredentialAuthManager];
|
|
||||||
[self manager];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_currentClientCredenzialClientID && _currentClientCredenzialClientSecret) {
|
||||||
|
|
||||||
|
[self userCredentialAuthManager];
|
||||||
|
}
|
||||||
|
[self manager];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (NSString * _Nonnull) getEnvironment {
|
- (NSString * _Nonnull) getEnvironment {
|
||||||
return _currentEnv;
|
return _currentEnv;
|
||||||
}
|
}
|
||||||
@ -309,11 +310,11 @@ static bool isFirstAccess = YES;
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *) endPointPath {
|
- (NSString *) endPointPath {
|
||||||
return _currentEndPointPath;
|
return _currentUserCredenzialEndPointPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *) endPointUrl {
|
- (NSString *) endPointUrl {
|
||||||
return _currentEndPointUrl;
|
return _currentUserCredenzialEndPointUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (AFHTTPSessionManager *) manager {
|
- (AFHTTPSessionManager *) manager {
|
||||||
@ -323,20 +324,20 @@ static bool isFirstAccess = YES;
|
|||||||
|
|
||||||
for (NSString *key in [_headerFields allKeys]) {
|
for (NSString *key in [_headerFields allKeys]) {
|
||||||
|
|
||||||
[_httpSerializer setValue:[_headerFields objectForKey:key] forHTTPHeaderField:key];
|
[_managerHttpRequestSerializer setValue:[_headerFields objectForKey:key] forHTTPHeaderField:key];
|
||||||
[_jsonSerializer setValue:[_headerFields objectForKey:key] forHTTPHeaderField:key];
|
[_managerJsonRequestSerializer setValue:[_headerFields objectForKey:key] forHTTPHeaderField:key];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_currentOauthUserCredential && ![_currentOauthUserCredential isExpired] && ![[_manager requestSerializer] hasAuthorizationHeaderField]) {
|
if (_currentOauthUserCredential && ![_currentOauthUserCredential isExpired] && ![[_manager requestSerializer] hasAuthorizationHeaderField]) {
|
||||||
|
|
||||||
[_httpSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
[_managerHttpRequestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
||||||
[_jsonSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
[_managerJsonRequestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
||||||
[_manager.requestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
[_manager.requestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
||||||
}
|
}
|
||||||
else if (_currentOauthClientCredential && ![_currentOauthClientCredential isExpired] && ![[_manager requestSerializer] hasAuthorizationHeaderField]) {
|
else if (_currentOauthClientCredential && ![_currentOauthClientCredential isExpired] && ![[_manager requestSerializer] hasAuthorizationHeaderField]) {
|
||||||
|
|
||||||
[_httpSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
[_managerHttpRequestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
||||||
[_jsonSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
[_managerJsonRequestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
||||||
[_manager.requestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
[_manager.requestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -344,34 +345,12 @@ static bool isFirstAccess = YES;
|
|||||||
}
|
}
|
||||||
|
|
||||||
_manager.responseSerializer = [AFJSONResponseSerializerWithData serializer];
|
_manager.responseSerializer = [AFJSONResponseSerializerWithData serializer];
|
||||||
_manager.requestSerializer = _jsonSerializer;
|
_manager.requestSerializer = _managerJsonRequestSerializer;
|
||||||
}
|
}
|
||||||
|
|
||||||
return _manager;
|
return _manager;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL) setCredentialIfPossible {
|
|
||||||
|
|
||||||
BOOL response = NO;
|
|
||||||
|
|
||||||
if (_currentOauthUserCredential && ![_currentOauthUserCredential isExpired] && ![[_manager requestSerializer] hasAuthorizationHeaderField]) {
|
|
||||||
|
|
||||||
[_httpSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
|
||||||
[_jsonSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
|
||||||
[_manager.requestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
|
||||||
response = YES;
|
|
||||||
}
|
|
||||||
else if (_currentOauthClientCredential && ![_currentOauthClientCredential isExpired] && ![[_manager requestSerializer] hasAuthorizationHeaderField]) {
|
|
||||||
|
|
||||||
[_httpSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
|
||||||
[_jsonSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
|
||||||
[_manager.requestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
|
||||||
response = YES;
|
|
||||||
}
|
|
||||||
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (AFOAuth2Manager *) clientCredentialAuthManager {
|
- (AFOAuth2Manager *) clientCredentialAuthManager {
|
||||||
|
|
||||||
BOOL canTryRefreh = NO;
|
BOOL canTryRefreh = NO;
|
||||||
@ -379,41 +358,34 @@ static bool isFirstAccess = YES;
|
|||||||
if (!_clientCredentialAuthManager) {
|
if (!_clientCredentialAuthManager) {
|
||||||
_clientCredentialAuthManager = [AFOAuth2Manager manager];
|
_clientCredentialAuthManager = [AFOAuth2Manager manager];
|
||||||
|
|
||||||
switch (_oauthMode) {
|
if (_currentClientCredenzialClientID && _currentClientCredenzialClientSecret) {
|
||||||
case OAuthModeClientCredential:{
|
|
||||||
if (_currentOAuthClientID && _currentOAuthClientSecret) {
|
if (![_clientCredentialAuthManager clientID]) {
|
||||||
|
|
||||||
if (![_clientCredentialAuthManager clientID]) {
|
|
||||||
_clientCredentialAuthManager = [AFOAuth2Manager managerWithBaseURL:[NSURL URLWithString:_currentOauthEndPointUrl] clientID:_currentOAuthClientID secret:_currentOAuthClientSecret];
|
|
||||||
}
|
|
||||||
|
|
||||||
[_clientCredentialAuthManager setUseHTTPBasicAuthentication:NO];
|
|
||||||
|
|
||||||
canTryRefreh = YES;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case OAuthModePassword:
|
|
||||||
case OAuthModeNo:
|
|
||||||
default:{
|
|
||||||
|
|
||||||
|
_clientCredentialAuthManager = [AFOAuth2Manager managerWithBaseURL:[NSURL URLWithString:_currentClientCredenzialEndPointUrl] clientID:_currentClientCredenzialClientID secret:_currentClientCredenzialClientSecret];
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
|
[_clientCredentialAuthManager setUseHTTPBasicAuthentication:NO];
|
||||||
|
|
||||||
|
canTryRefreh = YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for (NSString *key in [_headerFields allKeys]) {
|
for (NSString *key in [_headerFields allKeys]) {
|
||||||
|
|
||||||
[_httpSerializer setValue:[_headerFields objectForKey:key] forHTTPHeaderField:key];
|
[_oauthHttpRequestSerializer setValue:[_headerFields objectForKey:key] forHTTPHeaderField:key];
|
||||||
[_jsonSerializer setValue:[_headerFields objectForKey:key] forHTTPHeaderField:key];
|
[_oauthJsonRequestSerializer setValue:[_headerFields objectForKey:key] forHTTPHeaderField:key];
|
||||||
}
|
}
|
||||||
|
//[_oauthJsonRequestSerializer setValue:@"application/x-www-form-urlencoded; charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
|
||||||
|
|
||||||
|
_clientCredentialAuthManager.responseSerializer = [AFJSONResponseSerializerWithData serializer];
|
||||||
|
_clientCredentialAuthManager.requestSerializer = _oauthJsonRequestSerializer;
|
||||||
|
|
||||||
if (canTryRefreh) {
|
if (canTryRefreh) {
|
||||||
|
|
||||||
if (_currentOauthClientCredential && ![_currentOauthClientCredential isExpired] && ![[_manager requestSerializer] hasAuthorizationHeaderField]) {
|
if (_currentOauthClientCredential && ![_currentOauthClientCredential isExpired]) {
|
||||||
|
|
||||||
[_httpSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthClientCredential];
|
[_oauthHttpRequestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthClientCredential];
|
||||||
[_jsonSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthClientCredential];
|
[_oauthJsonRequestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthClientCredential];
|
||||||
[_clientCredentialAuthManager.requestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthClientCredential];
|
[_clientCredentialAuthManager.requestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthClientCredential];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -421,7 +393,6 @@ static bool isFirstAccess = YES;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_clientCredentialAuthManager.responseSerializer = [AFJSONResponseSerializerWithData serializer];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return _clientCredentialAuthManager;
|
return _clientCredentialAuthManager;
|
||||||
@ -434,41 +405,29 @@ static bool isFirstAccess = YES;
|
|||||||
if (!_userCredentialAuthManager) {
|
if (!_userCredentialAuthManager) {
|
||||||
_userCredentialAuthManager = [AFOAuth2Manager manager];
|
_userCredentialAuthManager = [AFOAuth2Manager manager];
|
||||||
|
|
||||||
switch (_oauthMode) {
|
if (_currentUserCredenzialClientID && _currentUserCredenzialClientID && _currentOAuthUserName && _currentOAuthPassword) {
|
||||||
|
|
||||||
case OAuthModePassword:{
|
if (![_userCredentialAuthManager clientID]) {
|
||||||
if (_currentClientID && _currentClientID && _currentOAuthUserName && _currentOAuthPassword) {
|
_userCredentialAuthManager = [AFOAuth2Manager managerWithBaseURL:[NSURL URLWithString:_currentClientCredenzialEndPointUrl] clientID:_currentUserCredenzialClientID secret:_currentUserCredenzialClientID];
|
||||||
|
|
||||||
if (![_userCredentialAuthManager clientID]) {
|
|
||||||
_userCredentialAuthManager = [AFOAuth2Manager managerWithBaseURL:[NSURL URLWithString:_currentOauthEndPointUrl] clientID:_currentClientID secret:_currentClientID];
|
|
||||||
}
|
|
||||||
|
|
||||||
[_userCredentialAuthManager setUseHTTPBasicAuthentication:NO];
|
|
||||||
|
|
||||||
canTryRefreh = YES;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
case OAuthModeClientCredential:
|
[_userCredentialAuthManager setUseHTTPBasicAuthentication:NO];
|
||||||
case OAuthModeNo:
|
|
||||||
default:{
|
canTryRefreh = YES;
|
||||||
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (NSString *key in [_headerFields allKeys]) {
|
for (NSString *key in [_headerFields allKeys]) {
|
||||||
|
|
||||||
[_httpSerializer setValue:[_headerFields objectForKey:key] forHTTPHeaderField:key];
|
[_oauthJsonRequestSerializer setValue:[_headerFields objectForKey:key] forHTTPHeaderField:key];
|
||||||
[_jsonSerializer setValue:[_headerFields objectForKey:key] forHTTPHeaderField:key];
|
[_oauthHttpRequestSerializer setValue:[_headerFields objectForKey:key] forHTTPHeaderField:key];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canTryRefreh) {
|
if (canTryRefreh) {
|
||||||
|
|
||||||
if (_currentOauthUserCredential && ![_currentOauthUserCredential isExpired] && ![[_manager requestSerializer] hasAuthorizationHeaderField]) {
|
if (_currentOauthUserCredential && ![_currentOauthUserCredential isExpired] && ![[_manager requestSerializer] hasAuthorizationHeaderField]) {
|
||||||
|
|
||||||
[_httpSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
[_oauthHttpRequestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
||||||
[_jsonSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
[_oauthJsonRequestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
||||||
[_userCredentialAuthManager.requestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
[_userCredentialAuthManager.requestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -477,25 +436,42 @@ static bool isFirstAccess = YES;
|
|||||||
}
|
}
|
||||||
|
|
||||||
_userCredentialAuthManager.responseSerializer = [AFJSONResponseSerializerWithData serializer];
|
_userCredentialAuthManager.responseSerializer = [AFJSONResponseSerializerWithData serializer];
|
||||||
|
_userCredentialAuthManager.requestSerializer = _oauthJsonRequestSerializer;
|
||||||
}
|
}
|
||||||
|
|
||||||
return _userCredentialAuthManager;
|
return _userCredentialAuthManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL) resetToken {
|
- (BOOL) resetTokenForOauthMode:(OAuthMode) oauthMode {
|
||||||
if (_currentOauthClientCredential) {
|
switch (oauthMode) {
|
||||||
_currentOauthClientCredential = nil;
|
case OAuthModeClientCredential:
|
||||||
[AFOAuthCredential deleteCredentialWithIdentifier:PNObjectServiceClientCredentialIdentifier];
|
if (_currentOauthClientCredential) {
|
||||||
return [AFOAuthCredential deleteCredentialWithIdentifier:PNObjectServiceUserCredentialIdentifier];
|
_currentOauthClientCredential = nil;
|
||||||
}
|
[AFOAuthCredential deleteCredentialWithIdentifier:PNObjectServiceClientCredentialIdentifier];
|
||||||
if (_currentOauthUserCredential) {
|
return [AFOAuthCredential deleteCredentialWithIdentifier:PNObjectServiceUserCredentialIdentifier];
|
||||||
_currentOauthUserCredential = nil;
|
}
|
||||||
[AFOAuthCredential deleteCredentialWithIdentifier:PNObjectServiceClientCredentialIdentifier];
|
break;
|
||||||
return [AFOAuthCredential deleteCredentialWithIdentifier:PNObjectServiceUserCredentialIdentifier];
|
case OAuthModePassword:
|
||||||
|
if (_currentOauthUserCredential) {
|
||||||
|
_currentOauthUserCredential = nil;
|
||||||
|
[AFOAuthCredential deleteCredentialWithIdentifier:PNObjectServiceClientCredentialIdentifier];
|
||||||
|
return [AFOAuthCredential deleteCredentialWithIdentifier:PNObjectServiceUserCredentialIdentifier];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void) resetAllTokens {
|
||||||
|
|
||||||
|
[self resetTokenForOauthMode:OAuthModeClientCredential];
|
||||||
|
[self resetTokenForOauthMode:OAuthModePassword];
|
||||||
|
}
|
||||||
|
|
||||||
- (void) refreshToken {
|
- (void) refreshToken {
|
||||||
|
|
||||||
[self refreshTokenWithBlockSuccess:nil failure:nil];
|
[self refreshTokenWithBlockSuccess:nil failure:nil];
|
||||||
@ -517,71 +493,207 @@ static bool isFirstAccess = YES;
|
|||||||
[self refreshTokenForUserWithBlockSuccess:nil failure:nil];
|
[self refreshTokenForUserWithBlockSuccess:nil failure:nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void) refreshTokenForClientCredential {
|
||||||
|
[self refreshTokenForClientCredentialWithBlockSuccess:nil failure:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void) refreshTokenForClientCredentialWithBlockSuccess:(nullable void (^)(BOOL refreshSuccess))success
|
||||||
|
failure:(nullable void (^)(NSError * _Nonnull error))failure {
|
||||||
|
[self refreshTokenForOauthMode:OAuthModeClientCredential WithBlockSuccess:success failure:failure];
|
||||||
|
}
|
||||||
|
|
||||||
- (void) refreshTokenForUserWithBlockSuccess:(nullable void (^)(BOOL refreshSuccess))success
|
- (void) refreshTokenForUserWithBlockSuccess:(nullable void (^)(BOOL refreshSuccess))success
|
||||||
failure:(nullable void (^)(NSError * _Nonnull error))failure {
|
failure:(nullable void (^)(NSError * _Nonnull error))failure {
|
||||||
|
|
||||||
__block __typeof__(_currentOauthUserCredential) __weak wCurrentOauthCredential = _currentOauthUserCredential;
|
[self refreshTokenForOauthMode:OAuthModePassword WithBlockSuccess:success failure:failure];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void) refreshTokenForOauthMode:(OAuthMode) oauthMode
|
||||||
|
WithBlockSuccess:(nullable void (^)(BOOL refreshSuccess))success
|
||||||
|
failure:(nullable void (^)(NSError * _Nonnull error))failure {
|
||||||
|
|
||||||
__block __typeof__(_httpSerializer) __weak wHttpSerializer = _httpSerializer;
|
__block __typeof__(_currentOauthClientCredential) __weak wCurrentOauthCredential = _currentOauthClientCredential;
|
||||||
__block __typeof__(_jsonSerializer) __weak wJsonSerializer = _jsonSerializer;
|
|
||||||
__block __typeof__(_manager) __weak wManager = _manager;
|
__block __typeof__(_managerHttpRequestSerializer) __weak wHttpSerializer = _managerHttpRequestSerializer;
|
||||||
|
__block __typeof__(_managerJsonRequestSerializer) __weak wJsonSerializer = _managerJsonRequestSerializer;
|
||||||
|
__block __typeof__(_clientCredentialAuthManager) __weak wClientCredentialAuthManager = _clientCredentialAuthManager;
|
||||||
__block __typeof__(_userCredentialAuthManager) __weak wUserCredentialAuthManager = _userCredentialAuthManager;
|
__block __typeof__(_userCredentialAuthManager) __weak wUserCredentialAuthManager = _userCredentialAuthManager;
|
||||||
|
__block __typeof__(_manager) __weak wManager = _manager;
|
||||||
|
|
||||||
if (_currentOauthUserCredential) {
|
|
||||||
|
switch (oauthMode) {
|
||||||
[_clientCredentialAuthManager authenticateUsingOAuthWithURLString:[_currentOauthEndPointUrl stringByAppendingString:_currentOauthEndPointAction] refreshToken:[_currentOauthUserCredential refreshToken] success:^(AFOAuthCredential * _Nonnull credential) {
|
case OAuthModeClientCredential:
|
||||||
wCurrentOauthCredential = credential;
|
if (_currentOauthClientCredential && ![_currentOauthClientCredential isExpired]) {
|
||||||
|
|
||||||
[AFOAuthCredential storeCredential:wCurrentOauthCredential withIdentifier:PNObjectServiceUserCredentialIdentifier];
|
[_clientCredentialAuthManager authenticateUsingOAuthWithURLString:_currentClientCredenzialEndPointUrl refreshToken:[_currentOauthClientCredential refreshToken] success:^(AFOAuthCredential * _Nonnull credential) {
|
||||||
|
wCurrentOauthCredential = credential;
|
||||||
[wHttpSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
|
||||||
[wJsonSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
[AFOAuthCredential storeCredential:wCurrentOauthCredential withIdentifier:PNObjectServiceClientCredentialIdentifier];
|
||||||
[wUserCredentialAuthManager.requestSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
|
||||||
[wManager.requestSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
[wHttpSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
||||||
|
[wJsonSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
||||||
[[NSNotificationCenter defaultCenter] postNotificationName:PNObjectLocalNotificationRefreshTokenUserSuccess object:nil];
|
[wClientCredentialAuthManager.requestSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
||||||
if (success) {
|
[wUserCredentialAuthManager.requestSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
||||||
success(YES);
|
[wManager.requestSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
||||||
|
|
||||||
|
[[NSNotificationCenter defaultCenter] postNotificationName:PNObjectLocalNotificationRefreshTokenClientCredentialSuccess object:nil];
|
||||||
|
if (success) {
|
||||||
|
success(YES);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
|
||||||
|
} failure:^(NSError * _Nonnull error) {
|
||||||
|
[self resetTokenForOauthMode:oauthMode];
|
||||||
|
|
||||||
|
[self refreshTokenForClientCredentialWithBlockSuccess:success failure:failure];
|
||||||
|
return;
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
return;
|
else {
|
||||||
|
[_clientCredentialAuthManager authenticateUsingOAuthWithURLString:_currentClientCredenzialEndPointUrl scope:@"" success:^(AFOAuthCredential * _Nonnull credential) {
|
||||||
} failure:^(NSError * _Nonnull error) {
|
|
||||||
[self resetToken];
|
[AFOAuthCredential storeCredential:wCurrentOauthCredential withIdentifier:PNObjectServiceClientCredentialIdentifier];
|
||||||
|
|
||||||
[self refreshTokenForUserWithBlockSuccess:success failure:failure];
|
[wHttpSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
||||||
return;
|
[wJsonSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
||||||
}];
|
[wClientCredentialAuthManager.requestSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
||||||
|
[wUserCredentialAuthManager.requestSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
||||||
}
|
[wManager.requestSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
||||||
else {
|
|
||||||
if([SINGLETON_PNObjectConfig.userSubClass currentUser] && [[SINGLETON_PNObjectConfig.userSubClass currentUser] hasValidEmailAndPasswordData]) {
|
[[NSNotificationCenter defaultCenter] postNotificationName:PNObjectLocalNotificationRefreshTokenClientCredentialSuccess object:nil];
|
||||||
|
if (success) {
|
||||||
[self refreshTokenForUserWithEmail:[[SINGLETON_PNObjectConfig.userSubClass currentUser] email] password:[[(PNUser*)[SINGLETON_PNObjectConfig.userSubClass currentUser] password] password] withBlockSuccess:success failure:failure];
|
success(YES);
|
||||||
return;
|
}
|
||||||
}
|
return;
|
||||||
else if ([SINGLETON_PNObjectConfig.userSubClass currentUser] && [[SINGLETON_PNObjectConfig.userSubClass currentUser] facebookId]){
|
} failure:^(NSError * _Nonnull error) {
|
||||||
[FBSDKAccessToken refreshCurrentAccessToken:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
|
|
||||||
if (error) {
|
|
||||||
if (failure) {
|
if (failure) {
|
||||||
failure(error);
|
failure(error);
|
||||||
}
|
}
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case OAuthModePassword:
|
||||||
|
if (_currentOauthClientCredential && ![_currentOauthClientCredential isExpired]) {
|
||||||
|
if (_currentOauthUserCredential && ![_currentOauthUserCredential isExpired]) {
|
||||||
|
|
||||||
|
[_userCredentialAuthManager authenticateUsingOAuthWithURLString:_currentClientCredenzialEndPointUrl refreshToken:[_currentOauthUserCredential refreshToken] success:^(AFOAuthCredential * _Nonnull credential) {
|
||||||
|
wCurrentOauthCredential = credential;
|
||||||
|
|
||||||
|
[AFOAuthCredential storeCredential:wCurrentOauthCredential withIdentifier:PNObjectServiceUserCredentialIdentifier];
|
||||||
|
|
||||||
|
[wHttpSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
||||||
|
[wJsonSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
||||||
|
[wUserCredentialAuthManager.requestSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
||||||
|
[wManager.requestSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
||||||
|
|
||||||
|
[[NSNotificationCenter defaultCenter] postNotificationName:PNObjectLocalNotificationRefreshTokenClientCredentialSuccess object:nil];
|
||||||
|
if (success) {
|
||||||
|
success(YES);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
|
||||||
|
} failure:^(NSError * _Nonnull error) {
|
||||||
|
[self resetTokenForOauthMode:oauthMode];
|
||||||
|
|
||||||
|
[self refreshTokenForOauthMode:oauthMode WithBlockSuccess:success failure:failure];
|
||||||
|
return;
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
[self refreshTokenForUserWithFacebookId:[[SINGLETON_PNObjectConfig.userSubClass currentUser] facebookId] facebookToken:[[FBSDKAccessToken currentAccessToken] tokenString] withBlockSuccess:success failure:failure];
|
|
||||||
|
if([SINGLETON_PNObjectConfig.userSubClass currentUser] && [[SINGLETON_PNObjectConfig.userSubClass currentUser] hasValidEmailAndPasswordData]) {
|
||||||
|
|
||||||
|
[self refreshTokenForUserWithEmail:[[SINGLETON_PNObjectConfig.userSubClass currentUser] email] password:[[(PNUser*)[SINGLETON_PNObjectConfig.userSubClass currentUser] password] password] withBlockSuccess:success failure:failure];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if ([SINGLETON_PNObjectConfig.userSubClass currentUser] && [[SINGLETON_PNObjectConfig.userSubClass currentUser] facebookId]){
|
||||||
|
[FBSDKAccessToken refreshCurrentAccessToken:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
|
||||||
|
if (error) {
|
||||||
|
if (failure) {
|
||||||
|
failure(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
[self refreshTokenForUserWithFacebookId:[[SINGLETON_PNObjectConfig.userSubClass currentUser] facebookId] facebookToken:[[FBSDKAccessToken currentAccessToken] tokenString] withBlockSuccess:success failure:failure];
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (failure) {
|
||||||
|
|
||||||
|
NSError *error = [NSError errorWithDomain:@"" code:kHTTPStatusCodeBadRequest userInfo:nil];
|
||||||
|
failure(error);
|
||||||
|
[[NSNotificationCenter defaultCenter] postNotificationName:PNObjectLocalNotificationRefreshTokenUserFail object:nil];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}];
|
}
|
||||||
}
|
else {
|
||||||
else {
|
|
||||||
if (failure) {
|
|
||||||
|
|
||||||
NSError *error = [NSError errorWithDomain:@"" code:kHTTPStatusCodeBadRequest userInfo:nil];
|
[self refreshTokenForClientCredentialWithBlockSuccess:^(BOOL refreshSuccess) {
|
||||||
failure(error);
|
[self refreshTokenForOauthMode:oauthMode WithBlockSuccess:success failure:failure];
|
||||||
[[NSNotificationCenter defaultCenter] postNotificationName:PNObjectLocalNotificationRefreshTokenUserFail object:nil];
|
} failure:failure];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default: {
|
||||||
|
if (success) {
|
||||||
|
success(YES);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void) refreshTokenForUserWithFacebookId:(NSString * _Nonnull) facebookId
|
||||||
|
facebookToken:(NSString * _Nonnull) facebookToken
|
||||||
|
withBlockSuccess:(nullable void (^)(BOOL refreshSuccess))success
|
||||||
|
failure:(nullable void (^)(NSError * _Nonnull error))failure {
|
||||||
|
if (!facebookId || [facebookId length] == 0) {
|
||||||
|
if (failure) {
|
||||||
|
NSError *error = [NSError errorWithDomain:NSLocalizedString(@"Facebook id is not valid", @"") code:kHTTPStatusCodeBadRequest userInfo:nil];
|
||||||
|
failure(error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!facebookToken || [facebookToken length] == 0) {
|
||||||
|
if (failure) {
|
||||||
|
NSError *error = [NSError errorWithDomain:NSLocalizedString(@"Facebook token is not valid", @"") code:kHTTPStatusCodeBadRequest userInfo:nil];
|
||||||
|
failure(error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
__block __typeof__(_currentOauthUserCredential) __weak wCurrentOauthCredential = _currentOauthUserCredential;
|
||||||
|
|
||||||
|
__block __typeof__(_managerHttpRequestSerializer) __weak wHttpSerializer = _managerHttpRequestSerializer;
|
||||||
|
__block __typeof__(_managerJsonRequestSerializer) __weak wJsonSerializer = _managerJsonRequestSerializer;
|
||||||
|
__block __typeof__(_manager) __weak wManager = _manager;
|
||||||
|
__block __typeof__(_userCredentialAuthManager) __weak wUserCredentialAuthManager = _userCredentialAuthManager;
|
||||||
|
|
||||||
|
[_userCredentialAuthManager authenticateUsingFacebookOAuthWithURLString:_currentClientCredenzialEndPointUrl facebookId:facebookId facebookToken:facebookToken scope:@"" success:^(AFOAuthCredential * _Nonnull credential) {
|
||||||
|
wCurrentOauthCredential = credential;
|
||||||
|
|
||||||
|
[AFOAuthCredential storeCredential:wCurrentOauthCredential withIdentifier:PNObjectServiceUserCredentialIdentifier];
|
||||||
|
|
||||||
|
[wHttpSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
||||||
|
[wJsonSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
||||||
|
[wUserCredentialAuthManager.requestSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
||||||
|
[wManager.requestSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
||||||
|
|
||||||
|
[[NSNotificationCenter defaultCenter] postNotificationName:PNObjectLocalNotificationRefreshTokenUserSuccess object:nil];
|
||||||
|
if (success) {
|
||||||
|
success(YES);
|
||||||
|
}
|
||||||
|
} failure:^(NSError * _Nonnull error) {
|
||||||
|
|
||||||
|
[[NSNotificationCenter defaultCenter] postNotificationName:PNObjectLocalNotificationRefreshTokenUserFail object:nil];
|
||||||
|
if (failure) {
|
||||||
|
failure(error);
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
- (void) refreshTokenForUserWithEmail:(NSString * _Nonnull) email
|
- (void) refreshTokenForUserWithEmail:(NSString * _Nonnull) email
|
||||||
password:(NSString * _Nonnull) password
|
password:(NSString * _Nonnull) password
|
||||||
withBlockSuccess:(nullable void (^)(BOOL refreshSuccess))success
|
withBlockSuccess:(nullable void (^)(BOOL refreshSuccess))success
|
||||||
@ -604,13 +716,13 @@ static bool isFirstAccess = YES;
|
|||||||
|
|
||||||
__block __typeof__(_currentOauthUserCredential) __weak wCurrentOauthCredential = _currentOauthUserCredential;
|
__block __typeof__(_currentOauthUserCredential) __weak wCurrentOauthCredential = _currentOauthUserCredential;
|
||||||
|
|
||||||
__block __typeof__(_httpSerializer) __weak wHttpSerializer = _httpSerializer;
|
__block __typeof__(_managerHttpRequestSerializer) __weak wHttpSerializer = _managerHttpRequestSerializer;
|
||||||
__block __typeof__(_jsonSerializer) __weak wJsonSerializer = _jsonSerializer;
|
__block __typeof__(_managerJsonRequestSerializer) __weak wJsonSerializer = _managerJsonRequestSerializer;
|
||||||
__block __typeof__(_manager) __weak wManager = _manager;
|
__block __typeof__(_manager) __weak wManager = _manager;
|
||||||
__block __typeof__(_userCredentialAuthManager) __weak wUserCredentialAuthManager = _userCredentialAuthManager;
|
__block __typeof__(_userCredentialAuthManager) __weak wUserCredentialAuthManager = _userCredentialAuthManager;
|
||||||
|
|
||||||
|
|
||||||
[_userCredentialAuthManager authenticateUsingOAuthWithURLString:[_currentOauthEndPointUrl stringByAppendingString:_currentOauthEndPointAction] username:email password:password scope:nil success:^(AFOAuthCredential * _Nonnull credential) {
|
[_userCredentialAuthManager authenticateUsingOAuthWithURLString:_currentClientCredenzialEndPointUrl username:email password:password scope:@"" success:^(AFOAuthCredential * _Nonnull credential) {
|
||||||
wCurrentOauthCredential = credential;
|
wCurrentOauthCredential = credential;
|
||||||
|
|
||||||
[AFOAuthCredential storeCredential:wCurrentOauthCredential withIdentifier:PNObjectServiceUserCredentialIdentifier];
|
[AFOAuthCredential storeCredential:wCurrentOauthCredential withIdentifier:PNObjectServiceUserCredentialIdentifier];
|
||||||
@ -634,131 +746,6 @@ static bool isFirstAccess = YES;
|
|||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) refreshTokenForUserWithFacebookId:(NSString * _Nonnull) facebookId
|
|
||||||
facebookToken:(NSString * _Nonnull) facebookToken
|
|
||||||
withBlockSuccess:(nullable void (^)(BOOL refreshSuccess))success
|
|
||||||
failure:(nullable void (^)(NSError * _Nonnull error))failure {
|
|
||||||
if (!facebookId || [facebookId length] == 0) {
|
|
||||||
if (failure) {
|
|
||||||
NSError *error = [NSError errorWithDomain:NSLocalizedString(@"Facebook id is not valid", @"") code:kHTTPStatusCodeBadRequest userInfo:nil];
|
|
||||||
failure(error);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!facebookToken || [facebookToken length] == 0) {
|
|
||||||
if (failure) {
|
|
||||||
NSError *error = [NSError errorWithDomain:NSLocalizedString(@"Facebook token is not valid", @"") code:kHTTPStatusCodeBadRequest userInfo:nil];
|
|
||||||
failure(error);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
__block __typeof__(_currentOauthUserCredential) __weak wCurrentOauthCredential = _currentOauthUserCredential;
|
|
||||||
|
|
||||||
__block __typeof__(_httpSerializer) __weak wHttpSerializer = _httpSerializer;
|
|
||||||
__block __typeof__(_jsonSerializer) __weak wJsonSerializer = _jsonSerializer;
|
|
||||||
__block __typeof__(_manager) __weak wManager = _manager;
|
|
||||||
__block __typeof__(_userCredentialAuthManager) __weak wUserCredentialAuthManager = _userCredentialAuthManager;
|
|
||||||
|
|
||||||
[_userCredentialAuthManager authenticateUsingFacebookOAuthWithURLString:[_currentOauthEndPointUrl stringByAppendingString:_currentOauthEndPointAction] facebookId:facebookId facebookToken:facebookToken scope:nil success:^(AFOAuthCredential * _Nonnull credential) {
|
|
||||||
wCurrentOauthCredential = credential;
|
|
||||||
|
|
||||||
[AFOAuthCredential storeCredential:wCurrentOauthCredential withIdentifier:PNObjectServiceUserCredentialIdentifier];
|
|
||||||
|
|
||||||
[wHttpSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
|
||||||
[wJsonSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
|
||||||
[wUserCredentialAuthManager.requestSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
|
||||||
[wManager.requestSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
|
||||||
|
|
||||||
[[NSNotificationCenter defaultCenter] postNotificationName:PNObjectLocalNotificationRefreshTokenUserSuccess object:nil];
|
|
||||||
if (success) {
|
|
||||||
success(YES);
|
|
||||||
}
|
|
||||||
} failure:^(NSError * _Nonnull error) {
|
|
||||||
|
|
||||||
[[NSNotificationCenter defaultCenter] postNotificationName:PNObjectLocalNotificationRefreshTokenUserFail object:nil];
|
|
||||||
if (failure) {
|
|
||||||
failure(error);
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void) refreshTokenForClientCredential {
|
|
||||||
[self refreshTokenForClientCredentialWithBlockSuccess:nil failure:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
- (void) refreshTokenForClientCredentialWithBlockSuccess:(nullable void (^)(BOOL refreshSuccess))success
|
|
||||||
failure:(nullable void (^)(NSError * _Nonnull error))failure {
|
|
||||||
|
|
||||||
__block __typeof__(_currentOauthClientCredential) __weak wCurrentOauthCredential = _currentOauthClientCredential;
|
|
||||||
|
|
||||||
__block __typeof__(_httpSerializer) __weak wHttpSerializer = _httpSerializer;
|
|
||||||
__block __typeof__(_jsonSerializer) __weak wJsonSerializer = _jsonSerializer;
|
|
||||||
__block __typeof__(_clientCredentialAuthManager) __weak wAuthManager = _clientCredentialAuthManager;
|
|
||||||
__block __typeof__(_manager) __weak wManager = _manager;
|
|
||||||
|
|
||||||
|
|
||||||
if (_currentOauthClientCredential) {
|
|
||||||
|
|
||||||
[_clientCredentialAuthManager authenticateUsingOAuthWithURLString:[_currentOauthEndPointUrl stringByAppendingString:_currentOauthEndPointAction] refreshToken:[_currentOauthClientCredential refreshToken] success:^(AFOAuthCredential * _Nonnull credential) {
|
|
||||||
wCurrentOauthCredential = credential;
|
|
||||||
|
|
||||||
[AFOAuthCredential storeCredential:wCurrentOauthCredential withIdentifier:PNObjectServiceUserCredentialIdentifier];
|
|
||||||
|
|
||||||
[wHttpSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
|
||||||
[wJsonSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
|
||||||
[wAuthManager.requestSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
|
||||||
[wManager.requestSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
|
||||||
|
|
||||||
[[NSNotificationCenter defaultCenter] postNotificationName:PNObjectLocalNotificationRefreshTokenClientCredentialSuccess object:nil];
|
|
||||||
if (success) {
|
|
||||||
success(YES);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
|
|
||||||
} failure:^(NSError * _Nonnull error) {
|
|
||||||
[self resetToken];
|
|
||||||
|
|
||||||
[self refreshTokenForClientCredentialWithBlockSuccess:success failure:failure];
|
|
||||||
return;
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
switch (_oauthMode) {
|
|
||||||
case OAuthModeClientCredential:{
|
|
||||||
[_clientCredentialAuthManager authenticateUsingOAuthWithURLString:[_currentOauthEndPointUrl stringByAppendingString:_currentOauthEndPointAction] scope:nil success:^(AFOAuthCredential * _Nonnull credential) {
|
|
||||||
wCurrentOauthCredential = credential;
|
|
||||||
|
|
||||||
[AFOAuthCredential storeCredential:wCurrentOauthCredential withIdentifier:PNObjectServiceUserCredentialIdentifier];
|
|
||||||
|
|
||||||
[wHttpSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
|
||||||
[wJsonSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
|
||||||
[wAuthManager.requestSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
|
||||||
[wManager.requestSerializer setAuthorizationHeaderFieldWithCredential:wCurrentOauthCredential];
|
|
||||||
|
|
||||||
[[NSNotificationCenter defaultCenter] postNotificationName:PNObjectLocalNotificationRefreshTokenClientCredentialSuccess object:nil];
|
|
||||||
if (success) {
|
|
||||||
success(YES);
|
|
||||||
}
|
|
||||||
|
|
||||||
} failure:^(NSError * _Nonnull error) {
|
|
||||||
[[NSNotificationCenter defaultCenter] postNotificationName:PNObjectLocalNotificationRefreshTokenClientCredentialFail object:nil];
|
|
||||||
if (failure) {
|
|
||||||
failure(error);
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case OAuthModePassword:
|
|
||||||
case OAuthModeNo:
|
|
||||||
default:
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
- (void) setAcceptablePasswordLenght:(NSUInteger) passLenght {
|
- (void) setAcceptablePasswordLenght:(NSUInteger) passLenght {
|
||||||
_minPasswordLenght = passLenght;
|
_minPasswordLenght = passLenght;
|
||||||
@ -774,14 +761,26 @@ static bool isFirstAccess = YES;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setClientID:(NSString * _Nonnull) clientID clientSecret:(NSString* _Nonnull) clientSecret oAuthEndpointAction:(NSString* _Nonnull) oAuthEndpointAction forEnv:(NSString *) environment {
|
- (void) setClientID:(NSString * _Nonnull) clientID clientSecret:(NSString* _Nonnull) clientSecret oAuthEndpointAction:(NSString* _Nonnull) oAuthEndpointAction oauthMode:(OAuthMode) oauthMode forEnv:(NSString *) environment {
|
||||||
|
|
||||||
if ([_configuration objectForKey:environment]) {
|
if ([_configuration objectForKey:environment]) {
|
||||||
|
|
||||||
NSMutableDictionary *currentConfigurationDict = [[NSMutableDictionary alloc] initWithDictionary:[_configuration objectForKey:environment]];
|
NSMutableDictionary *currentConfigurationDict = [[NSMutableDictionary alloc] initWithDictionary:[_configuration objectForKey:environment]];
|
||||||
[currentConfigurationDict setObject:clientID forKey:Client_ID];
|
switch (oauthMode) {
|
||||||
[currentConfigurationDict setObject:clientSecret forKey:Client_Secret];
|
case OAuthModeClientCredential:
|
||||||
[currentConfigurationDict setObject:oAuthEndpointAction forKey:OAuthEndpointAction];
|
[currentConfigurationDict setObject:clientID forKey:Client_Credential_ID];
|
||||||
|
[currentConfigurationDict setObject:clientSecret forKey:Client_Credential_Secret];
|
||||||
|
[currentConfigurationDict setObject:oAuthEndpointAction forKey:Client_CredentialEndpointAction];
|
||||||
|
break;
|
||||||
|
case OAuthModePassword:{
|
||||||
|
[currentConfigurationDict setObject:clientID forKey:Client_ID];
|
||||||
|
[currentConfigurationDict setObject:clientSecret forKey:Client_Secret];
|
||||||
|
[currentConfigurationDict setObject:oAuthEndpointAction forKey:Client_EndpointAction];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
[_configuration setObject:currentConfigurationDict forKey:environment];
|
[_configuration setObject:currentConfigurationDict forKey:environment];
|
||||||
|
|
||||||
@ -791,38 +790,31 @@ static bool isFirstAccess = YES;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setOauthClientID:(NSString * _Nonnull) oauthClientID oauthClientSecret:(NSString* _Nonnull) oauthClientSecret oAuthEndpointAction:(NSString* _Nonnull) oAuthEndpointAction forEnv:(NSString *) environment {
|
- (BOOL) setCredentialTokenForOauthMode:(OAuthMode) oauthMode {
|
||||||
|
switch (oauthMode) {
|
||||||
if ([_configuration objectForKey:environment]) {
|
case OAuthModeClientCredential:
|
||||||
|
if (_currentOauthClientCredential && ![_currentOauthClientCredential isExpired]) {
|
||||||
NSMutableDictionary *currentConfigurationDict = [[NSMutableDictionary alloc] initWithDictionary:[_configuration objectForKey:environment]];
|
return NO;
|
||||||
[currentConfigurationDict setObject:oauthClientID forKey:OAuthClient_ID];
|
}
|
||||||
[currentConfigurationDict setObject:oauthClientSecret forKey:OAuthClient_Secret];
|
[_managerHttpRequestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthClientCredential];
|
||||||
[currentConfigurationDict setObject:oAuthEndpointAction forKey:OAuthEndpointAction];
|
[_managerJsonRequestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthClientCredential];
|
||||||
|
[_manager.requestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthClientCredential];
|
||||||
[_configuration setObject:currentConfigurationDict forKey:environment];
|
break;
|
||||||
|
case OAuthModePassword:
|
||||||
if (_currentEnv == environment) {
|
if (_currentOauthUserCredential && ![_currentOauthUserCredential isExpired]) {
|
||||||
[self setEnvironment:environment];
|
return NO;
|
||||||
}
|
}
|
||||||
}
|
[_managerHttpRequestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
||||||
}
|
[_managerJsonRequestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
||||||
|
[_manager.requestSerializer setAuthorizationHeaderFieldWithCredential:_currentOauthUserCredential];
|
||||||
- (void) setOauthUserName:(NSString * _Nonnull)oauthUserName oauthPassword:(NSString* _Nonnull) oauthPassword oAuthEndpointAction:(NSString* _Nonnull) oAuthEndpointAction forEnv:(NSString *) environment {
|
break;
|
||||||
|
default:
|
||||||
if ([_configuration objectForKey:environment]) {
|
[_managerHttpRequestSerializer setValue:@"" forHTTPHeaderField:@"Authorization"];
|
||||||
|
[_managerJsonRequestSerializer setValue:@"" forHTTPHeaderField:@"Authorization"];
|
||||||
NSMutableDictionary *currentConfigurationDict = [[NSMutableDictionary alloc] initWithDictionary:[_configuration objectForKey:environment]];
|
[_manager.requestSerializer setValue:@"" forHTTPHeaderField:@"Authorization"];
|
||||||
[currentConfigurationDict setObject:oauthUserName forKey:Client_Username];
|
break;
|
||||||
[currentConfigurationDict setObject:oauthPassword forKey:Client_Password];
|
|
||||||
[currentConfigurationDict setObject:oAuthEndpointAction forKey:OAuthEndpointAction];
|
|
||||||
|
|
||||||
[_configuration setObject:currentConfigurationDict forKey:environment];
|
|
||||||
|
|
||||||
if (_currentEnv == environment) {
|
|
||||||
[self setEnvironment:environment];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@ -37,7 +37,7 @@ Configure PNObject endpoint client ID, client secret and OAuthModePassword with
|
|||||||
[PNObjectConfig initSharedInstanceForEnvironments:@{EnvironmentDevelopment : @{BaseUrl:@"http://pnobject.local/",EndpointPath:@"api/v1/"},
|
[PNObjectConfig initSharedInstanceForEnvironments:@{EnvironmentDevelopment : @{BaseUrl:@"http://pnobject.local/",EndpointPath:@"api/v1/"},
|
||||||
EnvironmentStage : @{BaseUrl:@"http://pnobject.stage.it/",EndpointPath:@"api/v1/"},
|
EnvironmentStage : @{BaseUrl:@"http://pnobject.stage.it/",EndpointPath:@"api/v1/"},
|
||||||
EnvironmentProduction : @{BaseUrl:@"http://pnobject.prod.it/",EndpointPath:@"api/v1/"},
|
EnvironmentProduction : @{BaseUrl:@"http://pnobject.prod.it/",EndpointPath:@"api/v1/"},
|
||||||
} userSubclass:[PNUser class] withOauthMode:OAuthModeClientCredential];
|
} userSubclass:[PNUser class]];
|
||||||
|
|
||||||
[[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentStage];
|
[[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentStage];
|
||||||
[[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentProduction];
|
[[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentProduction];
|
||||||
@ -71,7 +71,7 @@ Configure PNObject endpoint client ID, client secret and OAuthModePassword
|
|||||||
[PNObjectConfig initSharedInstanceForEnvironments:@{EnvironmentDevelopment : @"http://pnobject.local/api/v1/",
|
[PNObjectConfig initSharedInstanceForEnvironments:@{EnvironmentDevelopment : @"http://pnobject.local/api/v1/",
|
||||||
EnvironmentStage : @"http://pnobject.stage.it/api/v1/",
|
EnvironmentStage : @"http://pnobject.stage.it/api/v1/",
|
||||||
EnvironmentProduction : @"http://pnobject.prod.it/api/v1/"
|
EnvironmentProduction : @"http://pnobject.prod.it/api/v1/"
|
||||||
} userSubclass:[PNUser class] withOauthMode:OAuthModePassword];
|
} userSubclass:[PNUser class]];
|
||||||
|
|
||||||
[[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentStage];
|
[[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentStage];
|
||||||
[[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentProduction];
|
[[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentProduction];
|
||||||
@ -95,7 +95,7 @@ Configure PNObject endpoint client ID, client secret and OAuthModeClientCredenti
|
|||||||
[PNObjectConfig initSharedInstanceForEnvironments:@{EnvironmentDevelopment : @"http://pnobject.local/api/v1/",
|
[PNObjectConfig initSharedInstanceForEnvironments:@{EnvironmentDevelopment : @"http://pnobject.local/api/v1/",
|
||||||
EnvironmentStage : @"http://pnobject.stage.it/api/v1/",
|
EnvironmentStage : @"http://pnobject.stage.it/api/v1/",
|
||||||
EnvironmentProduction : @"http://pnobject.prod.it/api/v1/"
|
EnvironmentProduction : @"http://pnobject.prod.it/api/v1/"
|
||||||
} userSubclass:[PNUser class] withOauthMode:OAuthModeClientCredential];
|
} userSubclass:[PNUser class]];
|
||||||
|
|
||||||
[[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentStage];
|
[[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentStage];
|
||||||
[[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentProduction];
|
[[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentProduction];
|
||||||
@ -114,7 +114,7 @@ Configure PNObject endpoint and using custom PNUser object
|
|||||||
[PNObjectConfig initSharedInstanceForEnvironments:@{EnvironmentDevelopment : @"http://pnobject.local/api/v1/",
|
[PNObjectConfig initSharedInstanceForEnvironments:@{EnvironmentDevelopment : @"http://pnobject.local/api/v1/",
|
||||||
EnvironmentStage : @"http://pnobject.stage.it/api/v1/",
|
EnvironmentStage : @"http://pnobject.stage.it/api/v1/",
|
||||||
EnvironmentProduction : @"http://pnobject.prod.it/api/v1/"
|
EnvironmentProduction : @"http://pnobject.prod.it/api/v1/"
|
||||||
} userSubclass:[PNUser class] withOauthMode:OAuthModeClientCredential];
|
} userSubclass:[PNUser class]];
|
||||||
|
|
||||||
[[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentStage];
|
[[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentStage];
|
||||||
[[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentProduction];
|
[[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentProduction];
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user