From 982fc723278e8bc34640acb27da5012909cc5a95 Mon Sep 17 00:00:00 2001 From: Florent Vilmart Date: Mon, 7 Mar 2016 23:53:23 -0500 Subject: [PATCH] Adds HTTPResponse object and lazy loading text and JSON --- src/cloud-code/HTTPResponse.js | 21 +++++++++++++++++++++ src/cloud-code/httpRequest.js | 12 +++--------- 2 files changed, 24 insertions(+), 9 deletions(-) create mode 100644 src/cloud-code/HTTPResponse.js diff --git a/src/cloud-code/HTTPResponse.js b/src/cloud-code/HTTPResponse.js new file mode 100644 index 00000000..c8630da7 --- /dev/null +++ b/src/cloud-code/HTTPResponse.js @@ -0,0 +1,21 @@ + +export default class HTTPResponse { + constructor(response) { + this.status = response.statusCode; + this.headers = response.headers; + this.buffer = response.body; + this.cookies = response.headers["set-cookie"]; + } + + get text() { + return this.buffer.toString('utf-8'); + } + get data() { + if (!this._data) { + try { + this._data = JSON.parse(this.text); + } catch (e) {} + } + return this._data; + } +} \ No newline at end of file diff --git a/src/cloud-code/httpRequest.js b/src/cloud-code/httpRequest.js index 7c0b11f4..d4391256 100644 --- a/src/cloud-code/httpRequest.js +++ b/src/cloud-code/httpRequest.js @@ -1,6 +1,7 @@ var request = require("request"), querystring = require('querystring'), Parse = require('parse/node').Parse; + HTTPResponse = require('./HTTPResponse').HTTPResponse; var encodeBody = function(options = {}) { let body = options.body; @@ -62,15 +63,8 @@ module.exports = function(options) { } return promise.reject(error); } - var httpResponse = {}; - httpResponse.status = response.statusCode; - httpResponse.headers = response.headers; - httpResponse.buffer = response.body; - httpResponse.cookies = response.headers["set-cookie"]; - httpResponse.text = response.body.toString('utf-8'); - try { - httpResponse.data = JSON.parse(httpResponse.text); - } catch (e) {} + let httpResponse = new HTTPResponse(response); + // Consider <200 && >= 400 as errors if (httpResponse.status < 200 || httpResponse.status >= 400) { if (callbacks.error) {