From 41c856b3c96e6961faaba3d9e937d93bb8543847 Mon Sep 17 00:00:00 2001 From: Giuseppe Nucifora Date: Wed, 3 Feb 2016 02:01:13 +0100 Subject: [PATCH] - Fix vari --- .../xcschemes/PNObject-Example.xcscheme | 37 + Example/PNObject/PNObjectAppDelegate.m | 67 +- Example/PNObject/main.m | 6 +- Example/Podfile.lock | 4 +- .../Pods/Local Podspecs/PNObject.podspec.json | 6 +- Example/Pods/Manifest.lock | 4 +- Example/Pods/Pods.xcodeproj/project.pbxproj | 1052 ++++++++--------- .../xcshareddata/xcschemes/PNObject.xcscheme | 2 +- .../Target Support Files/PNObject/Info.plist | 2 +- .../PNObject/PNObject-umbrella.h | 9 +- .../ResourceBundle-PNObject-Info.plist | 2 +- PNObject.podspec | 2 +- Pod/Classes/PNClasses/PNAccessToken.h | 25 +- Pod/Classes/PNClasses/PNAccessToken.m | 32 +- Pod/Classes/PNClasses/PNUser.h | 4 +- Pod/Classes/PNObject+Protected.m | 10 +- Pod/Classes/PNObject.m | 29 +- Pod/Classes/PNObjectConfig.m | 182 +-- 18 files changed, 794 insertions(+), 681 deletions(-) diff --git a/Example/PNObject.xcodeproj/xcshareddata/xcschemes/PNObject-Example.xcscheme b/Example/PNObject.xcodeproj/xcshareddata/xcschemes/PNObject-Example.xcscheme index 9861ec6..7af5b08 100644 --- a/Example/PNObject.xcodeproj/xcshareddata/xcschemes/PNObject-Example.xcscheme +++ b/Example/PNObject.xcodeproj/xcshareddata/xcschemes/PNObject-Example.xcscheme @@ -71,7 +71,44 @@ ReferencedContainer = "container:PNObject.xcodeproj"> + + + + + + + + + + + + + + + + diff --git a/Example/Pods/Target Support Files/PNObject/Info.plist b/Example/Pods/Target Support Files/PNObject/Info.plist index 161a9d3..421cf1d 100644 --- a/Example/Pods/Target Support Files/PNObject/Info.plist +++ b/Example/Pods/Target Support Files/PNObject/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.1.0 + 0.2.3 CFBundleSignature ???? CFBundleVersion diff --git a/Example/Pods/Target Support Files/PNObject/PNObject-umbrella.h b/Example/Pods/Target Support Files/PNObject/PNObject-umbrella.h index a44a0b5..716dd18 100644 --- a/Example/Pods/Target Support Files/PNObject/PNObject-umbrella.h +++ b/Example/Pods/Target Support Files/PNObject/PNObject-umbrella.h @@ -1,15 +1,16 @@ #import +#import "PNAccessToken.h" +#import "PNAddress.h" +#import "PNInstallation.h" +#import "PNLocation.h" +#import "PNUser.h" #import "PNObject+PNObjectConnection.h" #import "PNObject+Protected.h" #import "PNObject.h" #import "PNObjectConfig.h" #import "PNObjectConstants.h" #import "PNObjectModel.h" -#import "PNObjectProperty.h" -#import "PNAddress.h" -#import "PNLocation.h" -#import "PNUser.h" FOUNDATION_EXPORT double PNObjectVersionNumber; FOUNDATION_EXPORT const unsigned char PNObjectVersionString[]; diff --git a/Example/Pods/Target Support Files/PNObject/ResourceBundle-PNObject-Info.plist b/Example/Pods/Target Support Files/PNObject/ResourceBundle-PNObject-Info.plist index aec6281..8c3cae2 100644 --- a/Example/Pods/Target Support Files/PNObject/ResourceBundle-PNObject-Info.plist +++ b/Example/Pods/Target Support Files/PNObject/ResourceBundle-PNObject-Info.plist @@ -13,7 +13,7 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 0.1.0 + 0.2.3 CFBundleSignature ???? CFBundleVersion diff --git a/PNObject.podspec b/PNObject.podspec index 8ed2022..58512e2 100644 --- a/PNObject.podspec +++ b/PNObject.podspec @@ -8,7 +8,7 @@ Pod::Spec.new do |s| s.name = "PNObject" -s.version = "0.2.3" +s.version = "0.2.4" s.summary = "PNObject is a simple replica of the more complex ParseObject" # This description is used to generate tags and improve search results. diff --git a/Pod/Classes/PNClasses/PNAccessToken.h b/Pod/Classes/PNClasses/PNAccessToken.h index 0ac01c8..4f5d51b 100644 --- a/Pod/Classes/PNClasses/PNAccessToken.h +++ b/Pod/Classes/PNClasses/PNAccessToken.h @@ -6,7 +6,7 @@ // // -#import +#import "PNObject.h" @interface PNAccessToken : PNObject @@ -14,6 +14,20 @@ typedef NS_ENUM(NSInteger, TokenType) { TokenTypeBasic = 1, TokenTypeBearer = 2 }; + +/** + * gets singleton object of current user session. + * + * @return singleton + */ ++ (instancetype _Nonnull) currentUser; + + +///-------------------------------------- +#pragma mark - PNAccessToken Properties +///-------------------------------------- + + /** * <#Description#> */ @@ -22,9 +36,18 @@ typedef NS_ENUM(NSInteger, TokenType) { * <#Description#> */ @property (nonatomic, strong, nullable) NSDate *expirationDate; + +@property (nonatomic, strong, nullable) NSNumber *expiresIn; /** * <#Description#> */ @property (nonatomic) TokenType tokenType; +@property (nonatomic, strong, nullable) NSString *tokenTypeString; + +@property (nonatomic, strong, nullable) NSString *scope; + +@property (nonatomic, strong, nullable) NSString *refreshToken; + + @end diff --git a/Pod/Classes/PNClasses/PNAccessToken.m b/Pod/Classes/PNClasses/PNAccessToken.m index b3ba879..68a097e 100644 --- a/Pod/Classes/PNClasses/PNAccessToken.m +++ b/Pod/Classes/PNClasses/PNAccessToken.m @@ -7,6 +7,7 @@ // #import "PNAccessToken.h" +#import @interface PNAccessToken() @@ -19,13 +20,35 @@ + (NSDictionary *)objcetMapping { NSDictionary *mapping = @{ - @"accessToken":@"accessToken", - @"expirationDate":@"expirationDate", - @"tokenType":@"tokenType", + @"accessToken":@"access_token", + @"expiresIn":@"expires_in", + @"tokenTypeString":@"token_type", + @"tokenType":@"scope", + @"refreshToken":@"refresh_token", }; return mapping; } +- (instancetype) initWithJSON:(NSDictionary *)JSON { + self = [super initWithJSON:JSON]; + + if (self) { + ((void (^)())@{ + @"beaer" : ^{ + _tokenType = TokenTypeBearer; + }, + @"basic" : ^{ + _tokenType = TokenTypeBasic; + } + }[_tokenTypeString] ?: ^{ + + })(); + + _expirationDate = [[NSDate date] dateByAddingHours:[_expiresIn integerValue]]; + } + return self; +} + + (NSString *)objectClassName { return @"AccessToken"; } @@ -38,7 +61,4 @@ - - - @end diff --git a/Pod/Classes/PNClasses/PNUser.h b/Pod/Classes/PNClasses/PNUser.h index 62f5ecb..897bcfa 100644 --- a/Pod/Classes/PNClasses/PNUser.h +++ b/Pod/Classes/PNClasses/PNUser.h @@ -7,7 +7,7 @@ // #import "PNObject.h" - +#import "PNAccessToken.h" @interface PNUser : PNObject @@ -33,7 +33,7 @@ //- (void) setPassword:(NSString * _Nonnull)password inBackGroundWithBlock:(nullable void (^)(BOOL saveStatus, id responseObject, NSError * error)) responseBlock; ///-------------------------------------- -#pragma mark - PNLocation Properties +#pragma mark - PNUser Properties ///-------------------------------------- /** diff --git a/Pod/Classes/PNObject+Protected.m b/Pod/Classes/PNObject+Protected.m index 16f712f..4bc7c8d 100644 --- a/Pod/Classes/PNObject+Protected.m +++ b/Pod/Classes/PNObject+Protected.m @@ -27,6 +27,9 @@ NSDictionary *properties = [PNObject propertiesForClass:self.class]; for (NSString *propertyName in properties) { + if ([propertyName isEqualToString:@"description"] || [propertyName isEqualToString:@"debugDescription"]) { + continue; + } [self addObserver:self forKeyPath:propertyName options:NSKeyValueObservingOptionNew context:nil]; } @@ -39,8 +42,11 @@ NSString *mappedJSONType; NSString *propertyType = [properties valueForKey:propertyName]; + NSLogDebug(@"%@",self.objectMapping); - id mappingValue = [self.objectMapping valueForKey:propertyName]; + NSLogDebug(@"%@",[[self class] objcetMapping]); + + id mappingValue = [[[self class] objcetMapping] valueForKey:propertyName]; if([mappingValue isKindOfClass:NSDictionary.class]) { mappedJSONKey = [mappingValue valueForKey:@"key"]; @@ -55,7 +61,7 @@ } // Get JSON value for the mapped key - id value = [JSON valueForKeyPath:propertyName]; + id value = [JSON valueForKeyPath:mappedJSONKey]; ((void (^)())@{ diff --git a/Pod/Classes/PNObject.m b/Pod/Classes/PNObject.m index c17adb3..f6392dd 100644 --- a/Pod/Classes/PNObject.m +++ b/Pod/Classes/PNObject.m @@ -259,6 +259,7 @@ return _JSON; } + - (NSDictionary* _Nonnull) getJSONObject { if (!_JSON) { return [self reverseMapping]; @@ -307,7 +308,9 @@ - (id _Nonnull) saveLocally { - return [_objectModel saveLocally:self]; + __weak id weakSelf = self; + + return [_objectModel saveLocally:weakSelf]; } - (BOOL) autoRemoveLocally { @@ -318,20 +321,26 @@ - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { - [_JSON setObject:[change objectForKey:@"new"] forKey:keyPath]; + NSLogDebug(@"%@",[[[self class] objcetMapping] objectForKey:keyPath]); + [_JSON setObject:[change objectForKey:@"new"] forKey:[[[self class] objcetMapping] objectForKey:keyPath]]; } -/*- (void)dealloc - { +- (void)dealloc +{ NSDictionary *properties = [PNObject propertiesForClass:self.class]; for (NSString *propertyName in properties) { - if ([[PNObject protectedProperties] containsObject:propertyName]) { - continue; - } - [self removeObserver:self forKeyPath:propertyName]; + if ([propertyName isEqualToString:@"description"] || [propertyName isEqualToString:@"debugDescription"]) { + continue; + } + [self removeObserver:self forKeyPath:propertyName]; } - } - */ + _JSON = nil; + _objectMapping = nil; + _objID = nil; + _createdAt = nil; + +} + @end diff --git a/Pod/Classes/PNObjectConfig.m b/Pod/Classes/PNObjectConfig.m index 76722c6..e61c3b5 100644 --- a/Pod/Classes/PNObjectConfig.m +++ b/Pod/Classes/PNObjectConfig.m @@ -39,134 +39,136 @@ static bool isFirstAccess = YES; + (instancetype)sharedInstance { - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - isFirstAccess = NO; - SINGLETON = [[super allocWithZone:NULL] init]; - }); - - return SINGLETON; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + isFirstAccess = NO; + SINGLETON = [[super allocWithZone:NULL] init]; + }); + + return SINGLETON; } #pragma mark - Life Cycle + (instancetype) initSharedInstanceForEnvironments:(NSDictionary *) endpointUrlsForEnvironments { - SINGLETON = [self sharedInstance]; - - if (SINGLETON) { - for (NSString *key in [endpointUrlsForEnvironments allKeys]) { - - ((void (^)())@{ - EnvironmentDevelopment : ^{ - NSURL * endpointUrl = [NSURL URLWithString:[endpointUrlsForEnvironments objectForKey:key]]; - if (endpointUrl) { - [SINGLETON.configuration setValue:[endpointUrl absoluteString] forKey:key]; - SINGLETON.devEnabled = YES; - } - - }, - EnvironmentStage : ^{ - NSURL * endpointUrl = [NSURL URLWithString:[endpointUrlsForEnvironments objectForKey:key]]; - if (endpointUrl) { - [SINGLETON.configuration setValue:[endpointUrl absoluteString] forKey:key]; - SINGLETON.stageEnabled = YES; - } - }, - EnvironmentProduction : ^{ - NSURL * endpointUrl = [NSURL URLWithString:[endpointUrlsForEnvironments objectForKey:key]]; - if (endpointUrl) { - [SINGLETON.configuration setValue:[endpointUrl absoluteString] forKey:key]; - SINGLETON.productionEnabled = YES; - } - } - }[key] ?: ^{ - - })(); - } - NSAssert(SINGLETON.productionEnabled, @"EnvironmentProduction must be valid endpoint url"); - SINGLETON.currentEnvironment = [[SINGLETON configuration] objectForKey:EnvironmentProduction]; - - } - return SINGLETON; + SINGLETON = [self sharedInstance]; + + if (SINGLETON) { + for (NSString *key in [endpointUrlsForEnvironments allKeys]) { + + ((void (^)())@{ + EnvironmentDevelopment : ^{ + NSURL * endpointUrl = [NSURL URLWithString:[endpointUrlsForEnvironments objectForKey:key]]; + if (endpointUrl) { + [SINGLETON.configuration setValue:[endpointUrl absoluteString] forKey:key]; + SINGLETON.devEnabled = YES; + } + + }, + EnvironmentStage : ^{ + NSURL * endpointUrl = [NSURL URLWithString:[endpointUrlsForEnvironments objectForKey:key]]; + if (endpointUrl) { + [SINGLETON.configuration setValue:[endpointUrl absoluteString] forKey:key]; + SINGLETON.stageEnabled = YES; + } + }, + EnvironmentProduction : ^{ + NSURL * endpointUrl = [NSURL URLWithString:[endpointUrlsForEnvironments objectForKey:key]]; + if (endpointUrl) { + [SINGLETON.configuration setValue:[endpointUrl absoluteString] forKey:key]; + SINGLETON.productionEnabled = YES; + } + } + }[key] ?: ^{ + + })(); + } + NSAssert(SINGLETON.productionEnabled, @"EnvironmentProduction must be valid endpoint url"); + SINGLETON.currentEnvironment = [[SINGLETON configuration] objectForKey:EnvironmentProduction]; + + } + return SINGLETON; } + (id) allocWithZone:(NSZone *)zone { - return [self sharedInstance]; + return [self sharedInstance]; } + (id)copyWithZone:(struct _NSZone *)zone { - return [self sharedInstance]; + return [self sharedInstance]; } + (id)mutableCopyWithZone:(struct _NSZone *)zone { - return [self sharedInstance]; + return [self sharedInstance]; } - (id)copy { - return [[PNObjectConfig alloc] init]; + return [[PNObjectConfig alloc] init]; } - (id)mutableCopy { - return [[PNObjectConfig alloc] init]; + return [[PNObjectConfig alloc] init]; } - (id) init { - if(SINGLETON){ - return SINGLETON; - } - if (isFirstAccess) { - [self doesNotRecognizeSelector:_cmd]; - } - self = [super init]; - - if (self) { - _configuration = [[NSMutableDictionary alloc] init]; - _minPasswordLenght = minPassLenght; - } - return self; + if(SINGLETON){ + return SINGLETON; + } + if (isFirstAccess) { + [self doesNotRecognizeSelector:_cmd]; + } + self = [super init]; + + if (self) { + _configuration = [[NSMutableDictionary alloc] init]; + _minPasswordLenght = minPassLenght; + + _manager = [AFHTTPSessionManager manager]; + } + return self; } - (void) setEnvironment:(Environment) env { - - _currentEnvironment = nil; - - switch (env) { - case Development:{ - if (_devEnabled) { - _currentEnvironment = [_configuration objectForKey:EnvironmentDevelopment]; - } - } - break; - case Stage:{ - if (_stageEnabled) { - _currentEnvironment = [_configuration objectForKey:EnvironmentStage]; - } - } - break; - case Production: - default: - if (_productionEnabled) { - _currentEnvironment = [_configuration objectForKey:EnvironmentProduction]; - } - break; - } - - NSAssert(_currentEnvironment,@"Selected environment generate error. Please check configuration"); - + + _currentEnvironment = nil; + + switch (env) { + case Development:{ + if (_devEnabled) { + _currentEnvironment = [_configuration objectForKey:EnvironmentDevelopment]; + } + } + break; + case Stage:{ + if (_stageEnabled) { + _currentEnvironment = [_configuration objectForKey:EnvironmentStage]; + } + } + break; + case Production: + default: + if (_productionEnabled) { + _currentEnvironment = [_configuration objectForKey:EnvironmentProduction]; + } + break; + } + + NSAssert(_currentEnvironment,@"Selected environment generate error. Please check configuration"); + } - (NSString *) PNObjEndpoint { - return _currentEnvironment; + return _currentEnvironment; } - (void) setAcceptablePasswordLenght:(NSUInteger) passLenght { - _minPasswordLenght = passLenght; + _minPasswordLenght = passLenght; } @end