40 lines
1.2 KiB
JavaScript
40 lines
1.2 KiB
JavaScript
const http = require('http')
|
|
const https = require('https')
|
|
const {promisify} = require('util')
|
|
|
|
https.get[promisify.custom] = function getAsyncHttps (options) {
|
|
return new Promise((resolve, reject) => {
|
|
const req = https.get(options, res => {
|
|
if (res.statusCode >= 400) return reject(new Error(res.statusCode))
|
|
res.end = new Promise(resolve => res.on('end', resolve))
|
|
resolve(res)
|
|
})
|
|
req.on('error', reject)
|
|
req.on('timeout', () => reject(new Error('timeout')) && req.abort())
|
|
})
|
|
}
|
|
|
|
http.get[promisify.custom] = function getAsyncHttp (options) {
|
|
return new Promise((resolve, reject) => {
|
|
const req = http.get(options, res => {
|
|
if (res.statusCode >= 400) return reject(new Error(res.statusCode))
|
|
res.end = new Promise(resolve => res.on('end', resolve))
|
|
resolve(res)
|
|
})
|
|
req.on('error', reject)
|
|
req.on('timeout', () => reject(new Error('timeout')) && req.abort())
|
|
})
|
|
}
|
|
|
|
const parseJSONData = (data, resolve, reject) => {
|
|
try {
|
|
resolve(JSON.parse(data.read()))
|
|
} catch (error) {
|
|
reject(error)
|
|
}
|
|
}
|
|
|
|
module.exports.parseJSONData = parseJSONData
|
|
module.exports.httpsGetAsync = promisify(https.get)
|
|
module.exports.httpGetAsync = promisify(http.get)
|