webclient-node.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import request = require('request-promise');
  2. import { IWebClient } from "./webclient";
  3. import { IWebClientOptions } from "./webclient-options";
  4. export default class WebClientNode implements IWebClient {
  5. public async request(options: IWebClientOptions): Promise<string> {
  6. if (!options.headers) {
  7. options.headers = {};
  8. }
  9. const rpOptions: any = {
  10. headers: options.headers,
  11. method: options.method,
  12. uri: options.url,
  13. };
  14. if (options.body) {
  15. rpOptions.body = options.body;
  16. }
  17. // console.log('rpOptions', rpOptions);
  18. const result = await request(rpOptions);
  19. return result;
  20. }
  21. public async requestJSON(options: IWebClientOptions): Promise<object> {
  22. if (!options.headers) {
  23. options.headers = {};
  24. }
  25. if (options.body) {
  26. options.headers['content-type'] = 'application/json';
  27. if (typeof options.body === 'object') {
  28. options.body = JSON.stringify(options.body);
  29. }
  30. }
  31. options.headers.accept = 'application/json';
  32. const rpOptions: any = {
  33. headers: options.headers,
  34. method: options.method,
  35. uri: options.url,
  36. };
  37. if (options.formData) {
  38. rpOptions.formData = options.formData;
  39. }
  40. if (options.body) {
  41. rpOptions.body = options.body;
  42. }
  43. // console.log('rpOptions', rpOptions);
  44. const result = await request(rpOptions);
  45. return JSON.parse(result);
  46. }
  47. }