From 3026c865562b5890561936a3723d306d5ae4f8ef Mon Sep 17 00:00:00 2001 From: Jonathan Carter Date: Sat, 16 Apr 2016 11:21:41 -0700 Subject: [PATCH] Add error handling --- ios/CodePush/CodePushPackage.m | 53 ++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/ios/CodePush/CodePushPackage.m b/ios/CodePush/CodePushPackage.m index 1cd9258..dd89368 100644 --- a/ios/CodePush/CodePushPackage.m +++ b/ios/CodePush/CodePushPackage.m @@ -10,6 +10,7 @@ static NSString *const DownloadFileName = @"download.zip"; static NSString *const RelativeBundlePathKey = @"bundlePath"; static NSString *const StatusFile = @"codepush.json"; static NSString *const UpdateBundleFileName = @"app.jsbundle"; +static NSString *const UpdateMetadataFileName = @"app.json"; static NSString *const UnzippedFolderName = @"unzipped"; #pragma mark - Public methods @@ -46,7 +47,7 @@ static NSString *const UnzippedFolderName = @"unzipped"; { NSString *newUpdateHash = updatePackage[@"packageHash"]; NSString *newUpdateFolderPath = [self getPackageFolderPath:newUpdateHash]; - NSString *newUpdateMetadataPath = [newUpdateFolderPath stringByAppendingPathComponent:@"app.json"]; + NSString *newUpdateMetadataPath = [newUpdateFolderPath stringByAppendingPathComponent:UpdateMetadataFileName]; NSError *error; if ([[NSFileManager defaultManager] fileExistsAtPath:newUpdateFolderPath]) { @@ -290,6 +291,11 @@ static NSString *const UnzippedFolderName = @"unzipped"; + (NSDictionary *)getCurrentPackage:(NSError **)error { NSString *packageHash = [CodePushPackage getCurrentPackageHash:error]; + + if (*error || !packageHash) { + return nil; + } + return [CodePushPackage getPackage:packageHash error:error]; } @@ -318,8 +324,8 @@ static NSString *const UnzippedFolderName = @"unzipped"; + (NSString *)getCurrentPackageHash:(NSError **)error { NSDictionary *info = [self getCurrentPackageInfo:error]; - if (*error) { - return NULL; + if (*error || !info) { + return nil; } return info[@"currentPackage"]; @@ -353,7 +359,7 @@ static NSString *const UnzippedFolderName = @"unzipped"; encoding:NSUTF8StringEncoding error:error]; if (*error) { - return NULL; + return nil; } NSData *data = [content dataUsingEncoding:NSUTF8StringEncoding]; @@ -361,7 +367,7 @@ static NSString *const UnzippedFolderName = @"unzipped"; options:kNilOptions error:error]; if (*error) { - return NULL; + return nil; } return [json mutableCopy]; @@ -375,27 +381,25 @@ static NSString *const UnzippedFolderName = @"unzipped"; + (NSDictionary *)getPackage:(NSString *)packageHash error:(NSError **)error { - NSString *folderPath = [self getPackageFolderPath:packageHash]; + NSString *updateDirectoryPath = [self getPackageFolderPath:packageHash]; + NSString *updateMetadataFilePath = [updateDirectoryPath stringByAppendingPathComponent:UpdateMetadataFileName]; - if (!folderPath) { - return [NSDictionary dictionary]; + if (![[NSFileManager defaultManager] fileExistsAtPath:updateMetadataFilePath]) { + return nil; } - NSString *packageFilePath = [folderPath stringByAppendingPathComponent:@"app.json"]; + NSString *updateMetadataString = [NSString stringWithContentsOfFile:updateMetadataFilePath + encoding:NSUTF8StringEncoding + error:error]; - NSString *content = [NSString stringWithContentsOfFile:packageFilePath - encoding:NSUTF8StringEncoding - error:error]; - if (!*error) { - NSData *data = [content dataUsingEncoding:NSUTF8StringEncoding]; - NSDictionary* jsonDict = [NSJSONSerialization JSONObjectWithData:data - options:kNilOptions - error:error]; - - return jsonDict; + if (*error) { + return nil; } - return NULL; + NSData *updateMetadata = [updateMetadataString dataUsingEncoding:NSUTF8StringEncoding]; + return [NSJSONSerialization JSONObjectWithData:updateMetadata + options:kNilOptions + error:error]; } + (NSString *)getPackageFolderPath:(NSString *)packageHash @@ -405,7 +409,12 @@ static NSString *const UnzippedFolderName = @"unzipped"; + (NSDictionary *)getPreviousPackage:(NSError **)error { - NSString *packageHash = [CodePushPackage getPreviousPackageHash:error]; + NSString *packageHash = [self getPreviousPackageHash:error]; + + if (*error || !packageHash) { + return nil; + } + return [CodePushPackage getPackage:packageHash error:error]; } @@ -413,7 +422,7 @@ static NSString *const UnzippedFolderName = @"unzipped"; { NSDictionary *info = [self getCurrentPackageInfo:error]; if (*error) { - return NULL; + return nil; } return info[@"previousPackage"];