http.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. 'use strict';
  2. const axios = require('axios').default;
  3. const pkgfile = require('../../package');
  4. const userAgent = 'AriaNg-Native/' + pkgfile.version;
  5. axios.interceptors.request.use(function (config) {
  6. config.headers['User-Agent'] = userAgent;
  7. return config;
  8. }, function (error) {
  9. return Promise.reject(error);
  10. });
  11. axios.interceptors.response.use(function (response) {
  12. return getFinalHttpResponse(response, true);
  13. }, function (error) {
  14. return getFinalHttpResponse((error.response ? error.response : error), false);
  15. });
  16. let getFinalHttpResponse = function (response, success) {
  17. const finalResponse = {
  18. data: (response && response.data) ? response.data : null,
  19. status: (response && response.status) ? response.status : -1,
  20. statusText: (response && response.statusText) ? response.statusText : '',
  21. config: {}
  22. };
  23. if (response && response.config) {
  24. if (response.config.method) {
  25. finalResponse.config.method = response.config.method.toUpperCase();
  26. }
  27. finalResponse.config.url = response.config.url;
  28. finalResponse.config.timeout = response.config.timeout;
  29. try {
  30. finalResponse.config.data = JSON.parse(response.config.data);
  31. } catch (ex) {
  32. ; // Do Nothing
  33. }
  34. finalResponse.config.headers = response.config.headers;
  35. }
  36. return {
  37. success: success,
  38. response: finalResponse
  39. };
  40. };
  41. let request = function (requestContext) {
  42. const request = {
  43. url: requestContext.url,
  44. method: requestContext.method
  45. };
  46. if (requestContext.timeout) {
  47. request.timeout = requestContext.timeout;
  48. }
  49. if (requestContext.headers) {
  50. request.headers = requestContext.headers;
  51. }
  52. if (requestContext.method === 'POST') {
  53. request.data = requestContext.data;
  54. }
  55. return axios(request);
  56. };
  57. module.exports = {
  58. request: request
  59. };