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=true&lang=en&only=styles&skin=vector&modules=";
 
 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

Reply via email to