PNObject 2.7.0

PNObject 2.7.0

TestsTested
LangLanguage Obj-CObjective C
License MIT
ReleasedLast Release Nov 2020

Maintained by Giuseppe Nucifora.



 
Depends on:
AFNetworking>= 0
PEAR-FileManager-iOS>= 0
NSDate_Utils>= 0
UIDevice-Utils>= 0
nv-ios-http-status>= 0
NSString-Helper>= 0
CodFis-Helper>= 0
StrongestPasswordValidator>= 0
FBSDKCoreKit~> 5.8.0
FBSDKLoginKit~> 5.8.0
FBSDKShareKit~> 5.8.0
FBSDKPlacesKit>= 0
NSDataAES>= 0
DDDKeychainWrapper>= 0
RZDataBinding>= 0
 

PNObject 2.7.0

  • By
  • Giuseppe Nucifora

PNObject

[![CI Status](http://img.shields.io/travis/Giuseppe Nucifora/PNObject.svg?style=flat)](https://travis-ci.org/Giuseppe Nucifora/PNObject) Version License Platform

Example

To run the example project, clone the repo, and run pod install from the Example directory first.

Requirements

Installation

PNObject is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "PNObject"

New in version 1.3.0

  • Can Separate Base url with endpoint api path during configuration
  • Access to separate base url, endpoint path or complete endpoint url

Configure PNObject endpoint client ID, client secret and OAuthModePassword with separate base url and api path

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    [PNObjectConfig initSharedInstanceForEnvironments:@{EnvironmentDevelopment : @{BaseUrl:@"http://pnobject.local/",EndpointPath:@"api/v1/"},
                                                        EnvironmentStage : @{BaseUrl:@"http://pnobject.stage.it/",EndpointPath:@"api/v1/"},
                                                        EnvironmentProduction : @{BaseUrl:@"http://pnobject.prod.it/",EndpointPath:@"api/v1/"},
                                                        } userSubclass:[PNUser class]];
    
    
    /** 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] setOauthUserName:@"admin" oauthPassword:@"admin" forEnv:EnvironmentStage];
   
    [[PNObjectConfig sharedInstance] setEnvironment:EnvironmentStage];
    
    [[PNObjectConfig sharedInstance] loadManagersWithCredentials];
    
    
}

Get BaseUrl, endPointPath and endPointUrl

    NSLogDebug(@"%@",[[PNObjectConfig sharedInstance] baseUrl]);
    NSLogDebug(@"%@",[[PNObjectConfig sharedInstance] endPointPath]);
    NSLogDebug(@"%@",[[PNObjectConfig sharedInstance] endPointUrl]);

Configure PNObject endpoint client ID, client secret and OAuthModePassword

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

[PNObjectConfig initSharedInstanceForEnvironments:@{EnvironmentDevelopment : @"http://pnobject.local/api/v1/",
                                                        EnvironmentStage : @"http://pnobject.stage.it/api/v1/",
                                                        EnvironmentProduction : @"http://pnobject.prod.it/api/v1/"
                                                        } userSubclass:[PNUser class]];
    
    [[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentStage];
    [[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentProduction];
        
    
    
    [[PNObjectConfig sharedInstance] setOauthUserName:@"admin" oauthPassword:@"admin" forEnv:EnvironmentStage];
   
    [[PNObjectConfig sharedInstance] setEnvironment:EnvironmentStage];
    
    [[PNObjectConfig sharedInstance] loadManagersWithCredentials];
}

Configure PNObject endpoint client ID, client secret and OAuthModeClientCredential

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

[PNObjectConfig initSharedInstanceForEnvironments:@{EnvironmentDevelopment : @"http://pnobject.local/api/v1/",
                                                        EnvironmentStage : @"http://pnobject.stage.it/api/v1/",
                                                        EnvironmentProduction : @"http://pnobject.prod.it/api/v1/"
                                                        } userSubclass:[PNUser class]];
    
    [[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentStage];
    [[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentProduction];
        
    [[PNObjectConfig sharedInstance] setEnvironment:EnvironmentStage];
    
    [[PNObjectConfig sharedInstance] loadManagersWithCredentials];
}

Configure PNObject endpoint and using custom PNUser object

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

[PNObjectConfig initSharedInstanceForEnvironments:@{EnvironmentDevelopment : @"http://pnobject.local/api/v1/",
                                                        EnvironmentStage : @"http://pnobject.stage.it/api/v1/",
                                                        EnvironmentProduction : @"http://pnobject.prod.it/api/v1/"
                                                        } userSubclass:[PNUser class]];
    
    [[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentStage];
    [[PNObjectConfig sharedInstance] setClientID:@"xxxxxxxxx" clientSecret:@"xxxxxxxxxxxx" forEnv:EnvironmentProduction];
        
    [[PNObjectConfig sharedInstance] setEnvironment:EnvironmentStage];
    
    [[PNObjectConfig sharedInstance] loadManagersWithCredentials];
}

User.h



#import <PNObject/PNUser.h>

@interface User : PNUser

@end

User.m

#import "User.h"
#import "PNObject+Protected.h"
#import "PNObject+PNObjectConnection.h"
#import <NSDate_Utils/NSDate+NSDate_Util.h>

@interface User () <PNObjectSubclassing>

@end


@implementation User

+ (NSDictionary *)objcetMapping {
    
    NSMutableDictionary *userMapping = [[NSMutableDictionary alloc] initWithDictionary:[[PNUser class] objcetMapping]];
    
    return userMapping;
}

+ (BOOL) singleInstance {
    return [[self class] singleInstance];
}

+ (NSString * _Nonnull) objectEndPoint {
    return @"User";
}


+ (NSString * _Nonnull ) objectClassName {
    return @"User";
}

###
Custom Reset Password

+ (void) resetPasswordForEmail:(NSString * _Nonnull) userEmail
                      Progress:(nullable void (^)(NSProgress * _Nonnull uploadProgress)) uploadProgress
                       Success:(nullable void (^)(NSDictionary * _Nullable responseObject))success
                       failure:(nullable void (^)(NSError * _Nonnull error))failure {
    
    [self POSTWithEndpointAction:@"password-reset-request"
                      parameters:[self resetPasswordFormObject:userEmail]
                        progress:uploadProgress
                         success:^(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject) {
                             if (success) {
                                 success(responseObject);
                             }
                         } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
                             if (failure) {
                                 failure(error);
                             }
                         }];
}

+ (NSDictionary * _Nonnull) resetPasswordFormObject:(NSString *) email {
    
    NSMutableDictionary *resetPasswordDictionary = [[NSMutableDictionary alloc] init];
    [resetPasswordDictionary setObject:email forKey:@"email"];
    
    return resetPasswordDictionary;
}

Author

Giuseppe Nucifora, [email protected]

License

PNObject is available under the MIT license. See the LICENSE file for more info.