Created
November 30, 2015 16:39
-
-
Save zallek/19305b47340480a356c8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Created by Kartik Andalam on 9/8/15. | |
* Copyright (c) 2015 APIMatic. All rights reserved. | |
* | |
*/ | |
var HttpContext = require("./HttpContext"); | |
var HttpResponse = require("../Response/HttpResponse"); | |
var request = require("superagent"); | |
var APIHelper = require('../../APIHelper'); | |
var convertHttpRequest = function (req) { | |
//Convert to request's version of http request | |
var options = { | |
url: req.queryUrl, | |
method: req.method, | |
headers: req.headers | |
}; | |
if (req.username) { | |
options.auth = {user:req.username, pass:req.password}; | |
} | |
if (req.body) { | |
options.body = req.body; | |
} | |
if (req.formData) { | |
options.formData = APIHelper.formDataEncodeObject(req.formData); | |
} | |
if (req.form) { | |
options.form = APIHelper.urlEncodeObject(req.form); | |
options.headers["content-type"] = 'application/x-www-form-urlencoded'; | |
} | |
return options; | |
} | |
var convertHttpResponse = function (resp) { | |
var response = new HttpResponse(); | |
if(resp) { | |
response.body = resp.body; | |
response.headers = resp.headers; | |
response.statusCode = resp.statusCode; | |
} | |
return response; | |
} | |
var methodMap = { | |
GET: 'get', | |
DELETE: 'del', | |
HEAD: 'head', | |
PATH: 'patch', | |
POST: 'post', | |
PUT: 'put' | |
} | |
request.parse['application/json'] = function(s) { return s; }; | |
/** | |
* Execute a given HttpRequest to get string response back | |
* @param {HttpRequest | HttpBodyRequest} request The query string builder to replace the template parameters | |
* @param {Array} parameters The parameters to replace in the queryBuilder | |
*/ | |
function executeRequest(req, callback) { | |
//Convert abstracted request to request's http request | |
var options = convertHttpRequest(req); | |
var context = new HttpContext(); | |
context.request = req; | |
//Make a temp callback | |
var internalCallback = function cb(error, res) { | |
var response = convertHttpResponse(res); | |
context.response = response; | |
callback(error, response, context); | |
}; | |
request[methodMap[options.method]](options.url) | |
.set(options.headers) | |
.send(options.body) | |
.end(internalCallback) | |
} | |
module.exports = executeRequest; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment