UNPKG

gigya-node

Version:
59 lines (51 loc) 1.69 kB
import request = require('request'); import ProxyHttpRequest from '../interfaces/proxy-http-request'; import GigyaResponse from '../interfaces/gigya-response'; import fs = require('fs'); import path = require('path'); let certificate: string; let verboseHttpError = process.env['GIGYA_VERBOSE_HTTP_LOGGING']; function getCertificate(): string { if (!certificate) { try { certificate = fs.readFileSync(path.join(__dirname, '../../../assets/cacert.pem')).toString(); } catch (e) { log(e); } } return certificate; } function log(msg: any) : void { if (verboseHttpError) { console.log(msg); } } export const httpMethod = 'post'; /** * Make HTTP request to Gigya. */ export const httpRequest: ProxyHttpRequest = <R>(endpoint: string, host: string, requestParams: any, options?: request.CoreOptions | undefined) => { let start = Date.now(); return new Promise<GigyaResponse & R>((resolve, reject) => { const uri = `https://${host}/${endpoint}`; request.post(uri, { method: httpMethod, form: requestParams, ca: getCertificate(), ...options }, (error, response, body) => { log(`request to ${uri} took ${(new Date().getTime() - start) / 1000} seconds`); if (error) { log(error); reject(error); } try { resolve(JSON.parse(body)); } catch (ex) { log(`failed to parse response body from request to ${uri}\n${body}`); reject(ex); } }); }); } export default httpRequest;