From 5a37c8307c0fc562e7f322312ae9cf479fa91d09 Mon Sep 17 00:00:00 2001 From: Florent Vilmart Date: Wed, 3 Feb 2016 12:00:16 -0500 Subject: [PATCH] Adds proper http request to match parse original implementation --- httpRequest.js | 43 +++++++++++++++++++++++++++++++++++++++++++ index.js | 33 ++------------------------------- 2 files changed, 45 insertions(+), 31 deletions(-) create mode 100644 httpRequest.js diff --git a/httpRequest.js b/httpRequest.js new file mode 100644 index 0000000000..db696c65ee --- /dev/null +++ b/httpRequest.js @@ -0,0 +1,43 @@ +var request = require("request"), + Parse = require('parse/node').Parse; + +module.exports = function(options) { + var promise = new Parse.Promise(); + var callbacks = { + success: options.success, + error: options.error + }; + delete options.success; + delete options.error; + if (options.uri && !options.url) { + options.uri = options.url; + delete options.url; + } + if (typeof options.body === 'object') { + options.body = JSON.stringify(options.body); + } + request(options, (error, response, body) => { + var httpResponse = {}; + httpResponse.status = response.statusCode; + httpResponse.headers = response.headers; + httpResponse.buffer = new Buffer(response.body); + httpResponse.cookies = response.headers["set-cookie"]; + httpResponse.text = response.body; + try { + httpResponse.data = JSON.parse(response.body); + } catch (e) {} + // Consider <200 && >= 400 as errors + if (error || httpResponse.status <200 || httpResponse.status >=400) { + if (callbacks.error) { + return callbacks.error(httpResponse); + } + return promise.reject(httpResponse); + } else { + if (callbacks.success) { + return callbacks.success(httpResponse); + } + return promise.resolve(httpResponse); + } + }); + return promise; +}; \ No newline at end of file diff --git a/index.js b/index.js index e884eb6794..0bce0c729a 100644 --- a/index.js +++ b/index.js @@ -11,7 +11,7 @@ var batch = require('./batch'), multer = require('multer'), Parse = require('parse/node').Parse, PromiseRouter = require('./PromiseRouter'), - request = require('request'); + httpRequest = require('./httpRequest'); // Mutate the Parse object to add the Cloud Code handlers addParseCloud(); @@ -148,36 +148,7 @@ function addParseCloud() { var className = getClassName(parseClass); Parse.Cloud.Triggers.afterDelete[className] = handler; }; - Parse.Cloud.httpRequest = function(options) { - var promise = new Parse.Promise(); - var callbacks = { - success: options.success, - error: options.error - }; - delete options.success; - delete options.error; - if (options.uri && !options.url) { - options.uri = options.url; - delete options.url; - } - if (typeof options.body === 'object') { - options.body = JSON.stringify(options.body); - } - request(options, (error, response, body) => { - if (error) { - if (callbacks.error) { - return callbacks.error(error); - } - return promise.reject(error); - } else { - if (callbacks.success) { - return callbacks.success(body); - } - return promise.resolve(body); - } - }); - return promise; - }; + Parse.Cloud.httpRequest = httpRequest; global.Parse = Parse; }