cordova-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From agri...@apache.org
Subject [2/2] git commit: Add HttpServer.ResponseException for easier 500 responses
Date Mon, 09 Jun 2014 14:32:47 GMT
Add HttpServer.ResponseException for easier 500 responses


Project: http://git-wip-us.apache.org/repos/asf/cordova-app-harness/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-app-harness/commit/f6fd67fe
Tree: http://git-wip-us.apache.org/repos/asf/cordova-app-harness/tree/f6fd67fe
Diff: http://git-wip-us.apache.org/repos/asf/cordova-app-harness/diff/f6fd67fe

Branch: refs/heads/master
Commit: f6fd67fe863717f29a77a2f6b8716048b16f4604
Parents: 11f6116
Author: Andrew Grieve <agrieve@chromium.org>
Authored: Thu Jun 5 16:20:42 2014 -0400
Committer: Andrew Grieve <agrieve@chromium.org>
Committed: Mon Jun 9 10:32:27 2014 -0400

----------------------------------------------------------------------
 www/cdvah/js/HarnessServer.js | 10 +++++++---
 www/cdvah/js/HttpServer.js    | 11 ++++++++++-
 2 files changed, 17 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-app-harness/blob/f6fd67fe/www/cdvah/js/HarnessServer.js
----------------------------------------------------------------------
diff --git a/www/cdvah/js/HarnessServer.js b/www/cdvah/js/HarnessServer.js
index 5cda1db..ef56b02 100644
--- a/www/cdvah/js/HarnessServer.js
+++ b/www/cdvah/js/HarnessServer.js
@@ -60,7 +60,7 @@
         function ensureMethodDecorator(method, func) {
             return function(req, resp) {
                 if (req.method != method) {
-                    return resp.sendTextResponse(405, 'Method Not Allowed\n');
+                    throw new HttpServer.ResponseException(405, 'Method Not Allowed');
                 }
                 return func(req, resp);
             };
@@ -117,7 +117,7 @@
                         return resp.sendTextResponse(200, '');
                     });
                 }
-                return resp.sendTextResponse(412, 'No apps available for launch\n');
+                throw new HttpServer.ResponseException(412, 'No apps available for launch');
             });
         }
 
@@ -264,6 +264,8 @@
                     return ResourcesLoader.extractZipFile(tmpZipUrl, tmpDirUrl);
                 })
                 .then(function() {
+                    // This file looks like:
+                    // {"path/within/zip": { "path": "dest/path", "etag": "foo" }}
                     return ResourcesLoader.readJSONFileContents(tmpDirUrl + 'zipassetmanifest.json');
                 }, null, function(unzipPercentage) {
                     app.updatingStatus = unzipPercentage;
@@ -274,10 +276,12 @@
                     .then(function next() {
                         var k = keys.shift();
                         if (k) {
-                            return importFile(tmpDirUrl + k, k, app, zipAssetManifest[k]['etag'])
+                            return importFile(tmpDirUrl + k, zipAssetManifest[k]['path'],
app, zipAssetManifest[k]['etag'])
                             .then(next);
                         }
                     });
+                }, function() {
+                    throw new HttpServer.ResponseException(400, 'Zip file missing zipassetmanifest.json');
                 })
                 .then(function() {
                     return incrementUpdateStatusAndSendManifest(app, req, resp);

http://git-wip-us.apache.org/repos/asf/cordova-app-harness/blob/f6fd67fe/www/cdvah/js/HttpServer.js
----------------------------------------------------------------------
diff --git a/www/cdvah/js/HttpServer.js b/www/cdvah/js/HttpServer.js
index 9a30a28..2d7244c 100644
--- a/www/cdvah/js/HttpServer.js
+++ b/www/cdvah/js/HttpServer.js
@@ -39,6 +39,11 @@
             requestData.state = newState;
         }
 
+        function ResponseException(code, /* optional */ responseText) {
+            this.code = code;
+            this.responseText = responseText;
+        }
+
         function HttpRequest(requestData) {
             this._requestData = requestData;
             this.method = requestData.method;
@@ -396,7 +401,10 @@
                             if (requestData.state < STATE_RESPONSE_STARTED) {
                                 return req.readEntireBody()
                                 .then(function() {
-                                    return resp.sendTextResponse(500, '' + err);
+                                    if (err instanceof ResponseException) {
+                                        return resp.sendTextResponse(err.code, (err.responseText
|| '') + '\n');
+                                    }
+                                    return resp.sendTextResponse(500, '' + err + '\n');
                                 });
                             } else {
                                 return requestData.socket.close();
@@ -488,6 +496,7 @@
             return headers;
         }
 
+        HttpServer.ResponseException = ResponseException;
         return HttpServer;
     }]);
 })();


Mime
View raw message