36 lines
898 B
TypeScript
36 lines
898 B
TypeScript
'use strict'
|
|
|
|
const http = require('http')
|
|
const https = require('https')
|
|
|
|
export interface response {
|
|
statusCode: number,
|
|
headers: object,
|
|
body: string
|
|
}
|
|
|
|
export function httpRequest(urlOptions, data = ''): Promise<response> {
|
|
let operator = http
|
|
if (urlOptions.startsWith('https'))
|
|
operator = https
|
|
|
|
return new Promise((resolve, reject) => {
|
|
const request = operator.request(urlOptions,
|
|
(result) => {
|
|
let body = ''
|
|
result.on('data', (chunk = '') => (body += chunk))
|
|
result.on('error', reject)
|
|
result.on('end', () => {
|
|
if (result.statusCode >= 200 && result.statusCode <= 299) {
|
|
resolve({statusCode: result.statusCode, headers: result.headers, body: body})
|
|
} else {
|
|
reject('Request failed. status: ' + result.statusCode + ', body: ' + body)
|
|
}
|
|
})
|
|
})
|
|
request.on('error', reject)
|
|
request.write(data, 'binary')
|
|
request.end()
|
|
})
|
|
}
|