nei-interface
Version:
auto create interface by nei
66 lines (63 loc) • 2.38 kB
JavaScript
const https = require('https');
const chalk = require('chalk');
const path = require("path");
const querystring= require('querystring');
const crypto = require('crypto');
const BufferHelper= require('./buffer-helper');
let Config = {}, baseOptions = {}
let Request = (url, options) => {
options = options || {}
options.data = Object.assign(options.data || {}, {platformId: Config.PLATFORM_ID})
let sign = crypto.createHmac('sha256', Config.SALT).update(querystring.stringify(options.data)).digest('hex')
Object.assign(options.data, {sign: sign})
if(options && ((!options.method || options.method === 'GET') && options.data)){
url += '?' + querystring.stringify(options.data);
delete options.data
}
let params = Object.assign({}, baseOptions, {
path: '/' + url
}, options)
return new Promise(function(resolve, reject){
const req = https.request(params, (res, req) => {
// console.log('状态码:', res.statusCode);
// console.log('响应头:', res.headers);
let bufferHelper = new BufferHelper()
res.on('data', function (chunk) {
bufferHelper.concat(chunk);
});
res.on('end', function () {
if(res.statusCode === 200){
let resJSON = JSON.parse(bufferHelper.toBuffer())
if(resJSON.code && resJSON.code === 200){
resolve(resJSON)
} else {
reject(resJSON)
}
} else {
console.log(chalk.red('httpcode非200 : '+ url))
reject({msg: 'http请求fail', code: res.statusCode})
}
});
});
req.on('error', (e) => {
reject({msg: 'request fail', code: res && res.statusCode ? res.statusCode : 201})
});
req.end();
})
}
let request = async (url, options) => {
try {
let res = await Request(url, options)
return res
} catch(e) {
console.log(chalk.red(`${url} 接口出错---code:${e.code}, msg: ${e.msg}`))
}
}
let initRequest = (config) => {
Config = config
baseOptions = {
hostname: Config.HOSTNAME,
method: 'GET'
}
}
module.exports = {initRequest: initRequest, request: request}