index.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  2. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  3. return new (P || (P = Promise))(function (resolve, reject) {
  4. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  5. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  6. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  7. step((generator = generator.apply(thisArg, _arguments || [])).next());
  8. });
  9. };
  10. import Axios from 'axios';
  11. import qs from 'querystring';
  12. const factory = (opts) => {
  13. const { baseURL, notifier, bridge, withCredentials = true } = opts || {};
  14. const axios = Axios.create({
  15. baseURL,
  16. withCredentials
  17. });
  18. return (opts) => __awaiter(void 0, void 0, void 0, function* () {
  19. const { url, method, query, data, dataType = 'form', headers = {} } = opts;
  20. let contentType;
  21. if (dataType === 'form') {
  22. contentType = 'application/x-www-form-urlencoded';
  23. }
  24. else if (dataType === 'json') {
  25. contentType = 'application/json';
  26. }
  27. if (method === 'POST') {
  28. Object.assign(headers, {
  29. 'Content-Type': contentType
  30. });
  31. }
  32. let res;
  33. try {
  34. res = yield axios({
  35. url,
  36. method,
  37. params: query,
  38. headers,
  39. data: data && (dataType === 'form' ? qs.stringify(data) : JSON.stringify(data))
  40. });
  41. }
  42. catch (e) {
  43. notifier && notifier(e.message, e.status, e);
  44. return e;
  45. }
  46. if (res.data) {
  47. const { status, data } = res.data;
  48. // require login
  49. if (status === -99) {
  50. bridge && bridge.checkLogin(true);
  51. }
  52. else if (status !== 1 && status !== 200) {
  53. const message = data && data.message || res.data.message || res.data.info;
  54. message && notifier && notifier(message, status, res);
  55. }
  56. }
  57. return res;
  58. });
  59. };
  60. const ProginnRequest = {
  61. create: factory
  62. };
  63. export default ProginnRequest;