httpPromise.ts 898 B

1234567891011121314151617181920212223242526272829303132333435
  1. 'use strict'
  2. const http = require('http')
  3. const https = require('https')
  4. export interface response {
  5. statusCode: number,
  6. headers: object,
  7. body: string
  8. }
  9. export function httpRequest(urlOptions, data = ''): Promise<response> {
  10. let operator = http
  11. if (urlOptions.startsWith('https'))
  12. operator = https
  13. return new Promise((resolve, reject) => {
  14. const request = operator.request(urlOptions,
  15. (result) => {
  16. let body = ''
  17. result.on('data', (chunk = '') => (body += chunk))
  18. result.on('error', reject)
  19. result.on('end', () => {
  20. if (result.statusCode >= 200 && result.statusCode <= 299) {
  21. resolve({statusCode: result.statusCode, headers: result.headers, body: body})
  22. } else {
  23. reject('Request failed. status: ' + result.statusCode + ', body: ' + body)
  24. }
  25. })
  26. })
  27. request.on('error', reject)
  28. request.write(data, 'binary')
  29. request.end()
  30. })
  31. }