UNPKG

skyriver

Version:

SkyRiver Streaming Cloud server-side library for NodeJS

152 lines (123 loc) 3.47 kB
'use strict'; var http = require('http'), https = require('https') , queryString = require('querystring') , config = require('./config'); function Request() { this.host = config.API_HOST; this.port = config.API_PORT; this.USE_HTTPS = config.USE_HTTPS; this.apiVersion = config.const.DEFAULT_API_VERSION; } Request.prototype.get = function(credentials, path, data, fn) { var reqPath = '/' + this.apiVersion + path; if (data && Object.keys(data).length > 0) { reqPath += '?' + queryString.stringify(data); } var headers = {}; var options = { host: this.host, port: this.port, path: reqPath, method: 'GET', headers: headers }; options.headers['Authorization'] = credentials.generateAccessToken(options, null); var httpGet = this.USE_HTTPS ? https: http; var req = httpGet.request(options, function(res) { res.setEncoding('utf-8'); var responseString = ''; res.on('data', function(data) { responseString += data; }); res.on('end', function() { var resultObject = JSON.parse(responseString); if (res.statusCode >= 400) { fn(resultObject, null); } else { fn(null, resultObject); } }); }); req.on('error', function(e) { fn(e, null); }); req.end(); }; Request.prototype.post = function(credentials, path, data, fn) { var dataString = JSON.stringify(data); var headers = { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(dataString, 'utf8') }; var options = { host: this.host, port: this.port, path: '/' + this.apiVersion + path, method: 'POST', headers: headers }; options.headers['Authorization'] = credentials.generateAccessToken(options, dataString); var httpPost = this.USE_HTTPS ? https: http; var req = httpPost.request(options, function(res) { res.setEncoding('utf-8'); var responseString = ''; res.on('data', function(data) { responseString += data; }); res.on('end', function() { var resultObject = JSON.parse(responseString); if (res.statusCode >= 400) { fn(resultObject, null); } else { fn(null, resultObject); } }); }); req.on('error', function(e) { fn(e, null); }); req.write(dataString); req.end(); }; Request.prototype.delete = function(credentials, path, fn, data) { var dataString; var headers = {}; if (data) { dataString = JSON.stringify(data); headers = { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(dataString, 'utf8') }; } var options = { host: this.host, port: this.port, path: '/' + this.apiVersion + path, method: 'DELETE', headers: headers }; options.headers['Authorization'] = credentials.generateAccessToken(options, dataString); var httpDelete = this.USE_HTTPS ? https: http; var req = httpDelete.request(options, function(res) { res.setEncoding('utf-8'); var responseString = ''; res.on('data', function(data) { responseString += data; }); res.on('end', function() { var resultObject = responseString.length > 0 ? JSON.parse(responseString) : null; if (res.statusCode >= 400) { fn(resultObject, null); } else { fn(null, resultObject); } }); }); req.on('error', function(e) { fn(e, null); }); req.write(dataString); req.end(); }; module.exports = Request;