[MediaWiki-commits] [Gerrit] Further protection against corrupting css on build and sync. - change (apps...wikipedia)
Brion VIBBER has submitted this change and it was merged. Change subject: Further protection against corrupting css on build and sync. .. Further protection against corrupting css on build and sync. Updated error code range comparisons based on comments. Change-Id: I47b61a143d6f02e61be4081a1036754f407ea453 --- M scripts/make-css-assets.bash M wikipedia/Data/Operations/SyncAssetsFileOp.m M wikipedia/mw-network/MWNetworkOp.h M wikipedia/mw-network/MWNetworkOp.m 4 files changed, 32 insertions(+), 10 deletions(-) Approvals: Brion VIBBER: Verified; Looks good to me, approved diff --git a/scripts/make-css-assets.bash b/scripts/make-css-assets.bash index e3a59c3..10b44f2 100755 --- a/scripts/make-css-assets.bash +++ b/scripts/make-css-assets.bash @@ -5,8 +5,8 @@ PREFIX=http://bits.wikimedia.org/en.wikipedia.org/load.php?debug=truelang=enonly=stylesskin=vectormodules=; cd wikipedia/assets/ { -curl -o 'styles.css' ${PREFIX}mobile.app.pagestyles.ios -curl -o 'abusefilter.css' ${PREFIX}mobile.app.pagestyles.ios -curl -o 'preview.css' ${PREFIX}mobile.app.preview +curl -L -f -o 'styles.css' ${PREFIX}mobile.app.pagestyles.ios +curl -L -f -o 'abusefilter.css' ${PREFIX}mobile.app.pagestyles.ios +curl -L -f -o 'preview.css' ${PREFIX}mobile.app.preview } diff --git a/wikipedia/Data/Operations/SyncAssetsFileOp.m b/wikipedia/Data/Operations/SyncAssetsFileOp.m index 84c826d..d8c89ad 100644 --- a/wikipedia/Data/Operations/SyncAssetsFileOp.m +++ b/wikipedia/Data/Operations/SyncAssetsFileOp.m @@ -35,12 +35,11 @@ self.completionBlock = ^(){ [[MWNetworkActivityIndicatorManager sharedManager] pop]; -if(weakSelf.isCancelled){ -return; -} - -if (weakSelf.error) { -return; +if (weakSelf.isCancelled || weakSelf.error) return; + +if (weakSelf.response) { +// Make extra sure that weird responses don't get written. +if (((NSHTTPURLResponse *)weakSelf.response).statusCode != 200) return; } // If it got this far, then a refresh was needed and has completed. diff --git a/wikipedia/mw-network/MWNetworkOp.h b/wikipedia/mw-network/MWNetworkOp.h index 721785e..fabb3e6 100644 --- a/wikipedia/mw-network/MWNetworkOp.h +++ b/wikipedia/mw-network/MWNetworkOp.h @@ -31,6 +31,7 @@ @property (weak) id NetworkOpDelegate delegate; @property (copy) NSURLRequest *request; +@property (strong, nonatomic) NSURLResponse *response; @property (copy, readonly) NSMutableData *dataRetrieved; @property (nonatomic) NSUInteger dataRetrievedExpectedLength; diff --git a/wikipedia/mw-network/MWNetworkOp.m b/wikipedia/mw-network/MWNetworkOp.m index af37787..e7539b0 100644 --- a/wikipedia/mw-network/MWNetworkOp.m +++ b/wikipedia/mw-network/MWNetworkOp.m @@ -10,7 +10,6 @@ @property (nonatomic, assign, getter = isOperationStarted) BOOL operationStarted; @property (strong, nonatomic) NSURLConnection *connection; -@property (strong, nonatomic) NSURLResponse *response; @property (copy, readwrite) NSNumber *bytesWritten; @property (copy, readwrite) NSNumber *bytesExpectedToWrite; @@ -184,6 +183,29 @@ self.response = response; } +-(void)setResponse:(NSURLResponse *)response +{ +_response = response; + +[self failIfBadHTTPStatusCode]; +} + +-(void)failIfBadHTTPStatusCode +{ +if (!self.response) return; + +// If the response is a server or client error finish with an error. +NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)self.response; +NSInteger code = httpResponse.statusCode; +if ((code = 400) (code = 499)) { +[self finishWithError:[NSString stringWithFormat:@Client error. HTTP Status Code %ld, (long)code]]; +}else if ((code = 500) (code = 599)) { +[self finishWithError:[NSString stringWithFormat:@Server error. HTTP Status Code %ld, (long)code]]; +} +//NSLog(@responseStatusCode = %ld, (long)code); +//NSLog(@allHeaderFields = %@, httpResponse.allHeaderFields); +} + -(void)connectionDidFinishLoading:(NSURLConnection *)connection { if([self isCancelled]) { -- To view, visit https://gerrit.wikimedia.org/r/153696 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I47b61a143d6f02e61be4081a1036754f407ea453 Gerrit-PatchSet: 2 Gerrit-Project: apps/ios/wikipedia Gerrit-Branch: master Gerrit-Owner: Mhurd mh...@wikimedia.org Gerrit-Reviewer: Brion VIBBER br...@wikimedia.org ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Further protection against corrupting css on build and sync. - change (apps...wikipedia)
Mhurd has uploaded a new change for review. https://gerrit.wikimedia.org/r/153696 Change subject: Further protection against corrupting css on build and sync. .. Further protection against corrupting css on build and sync. Change-Id: I47b61a143d6f02e61be4081a1036754f407ea453 --- M scripts/make-css-assets.bash M wikipedia/Data/Operations/SyncAssetsFileOp.m M wikipedia/mw-network/MWNetworkOp.h M wikipedia/mw-network/MWNetworkOp.m 4 files changed, 32 insertions(+), 10 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/ios/wikipedia refs/changes/96/153696/1 diff --git a/scripts/make-css-assets.bash b/scripts/make-css-assets.bash index e3a59c3..10b44f2 100755 --- a/scripts/make-css-assets.bash +++ b/scripts/make-css-assets.bash @@ -5,8 +5,8 @@ PREFIX=http://bits.wikimedia.org/en.wikipedia.org/load.php?debug=truelang=enonly=stylesskin=vectormodules=; cd wikipedia/assets/ { -curl -o 'styles.css' ${PREFIX}mobile.app.pagestyles.ios -curl -o 'abusefilter.css' ${PREFIX}mobile.app.pagestyles.ios -curl -o 'preview.css' ${PREFIX}mobile.app.preview +curl -L -f -o 'styles.css' ${PREFIX}mobile.app.pagestyles.ios +curl -L -f -o 'abusefilter.css' ${PREFIX}mobile.app.pagestyles.ios +curl -L -f -o 'preview.css' ${PREFIX}mobile.app.preview } diff --git a/wikipedia/Data/Operations/SyncAssetsFileOp.m b/wikipedia/Data/Operations/SyncAssetsFileOp.m index 84c826d..d8c89ad 100644 --- a/wikipedia/Data/Operations/SyncAssetsFileOp.m +++ b/wikipedia/Data/Operations/SyncAssetsFileOp.m @@ -35,12 +35,11 @@ self.completionBlock = ^(){ [[MWNetworkActivityIndicatorManager sharedManager] pop]; -if(weakSelf.isCancelled){ -return; -} - -if (weakSelf.error) { -return; +if (weakSelf.isCancelled || weakSelf.error) return; + +if (weakSelf.response) { +// Make extra sure that weird responses don't get written. +if (((NSHTTPURLResponse *)weakSelf.response).statusCode != 200) return; } // If it got this far, then a refresh was needed and has completed. diff --git a/wikipedia/mw-network/MWNetworkOp.h b/wikipedia/mw-network/MWNetworkOp.h index 721785e..fabb3e6 100644 --- a/wikipedia/mw-network/MWNetworkOp.h +++ b/wikipedia/mw-network/MWNetworkOp.h @@ -31,6 +31,7 @@ @property (weak) id NetworkOpDelegate delegate; @property (copy) NSURLRequest *request; +@property (strong, nonatomic) NSURLResponse *response; @property (copy, readonly) NSMutableData *dataRetrieved; @property (nonatomic) NSUInteger dataRetrievedExpectedLength; diff --git a/wikipedia/mw-network/MWNetworkOp.m b/wikipedia/mw-network/MWNetworkOp.m index af37787..cbfd434 100644 --- a/wikipedia/mw-network/MWNetworkOp.m +++ b/wikipedia/mw-network/MWNetworkOp.m @@ -10,7 +10,6 @@ @property (nonatomic, assign, getter = isOperationStarted) BOOL operationStarted; @property (strong, nonatomic) NSURLConnection *connection; -@property (strong, nonatomic) NSURLResponse *response; @property (copy, readwrite) NSNumber *bytesWritten; @property (copy, readwrite) NSNumber *bytesExpectedToWrite; @@ -184,6 +183,29 @@ self.response = response; } +-(void)setResponse:(NSURLResponse *)response +{ +_response = response; + +[self failIfBadHTTPStatusCode]; +} + +-(void)failIfBadHTTPStatusCode +{ +if (!self.response) return; + +// If the response is a server or client error finish with an error. +NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)self.response; +NSInteger code = httpResponse.statusCode; +if ((code 399) (code 500)) { +[self finishWithError:[NSString stringWithFormat:@Client error. HTTP Status Code %ld, (long)code]]; +}else if ((code 499) (code 600)) { +[self finishWithError:[NSString stringWithFormat:@Server error. HTTP Status Code %ld, (long)code]]; +} +//NSLog(@responseStatusCode = %ld, (long)code); +//NSLog(@allHeaderFields = %@, httpResponse.allHeaderFields); +} + -(void)connectionDidFinishLoading:(NSURLConnection *)connection { if([self isCancelled]) { -- To view, visit https://gerrit.wikimedia.org/r/153696 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I47b61a143d6f02e61be4081a1036754f407ea453 Gerrit-PatchSet: 1 Gerrit-Project: apps/ios/wikipedia Gerrit-Branch: master Gerrit-Owner: Mhurd mh...@wikimedia.org ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits