giphy-api
Version:
JavaScript module for the giphy.com API that supports promises and callbacks.
54 lines (46 loc) • 1.42 kB
JavaScript
var http = require('http');
var https = require('https');
exports.create = function (httpsEnabled) {
return httpsEnabled ? https : http;
};
/**
* Non-browser based GET request
* @param options {Object}
* options.httpService {Object} - The HTTP service to use. Created using the `create` function above.
* options.request {Object} - Request data including host and path
* options.timeout {Number} - Request timeout before returning an error. Defaults to 30000 milliseconds
* options.fmt {String} - Return results in html or json format (useful for viewing responses as GIFs to debug/test)
*/
exports.get = function (options, resolve, reject) {
var httpService = options.httpService;
var request = options.request;
var timeout = options.timeout;
var fmt = options.fmt;
request.withCredentials = false;
var req = httpService.get(request, function (response) {
var body = '';
response.on('data', function (d) {
body += d;
});
response.on('end', function () {
if (fmt !== 'html') {
try {
body = JSON.parse(body);
} catch (e) {
reject(e);
return;
}
}
resolve(body);
});
});
req.on('error', function (err) {
reject(err);
});
req.on('socket', function (socket) {
socket.setTimeout(timeout);
socket.on('timeout', function () {
req.abort();
});
});
};