123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- 'use strict';
- function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
- var utils = _interopDefault(require('axios/lib/utils'));
- var settle = _interopDefault(require('axios/lib/core/settle'));
- var buildURL = _interopDefault(require('axios/lib/helpers/buildURL'));
- var buildFullPath = _interopDefault(require('axios/lib/core/buildFullPath'));
- var createError = _interopDefault(require('axios/lib/core/createError'));
- var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
- function encoder(input) {
- var str = String(input);
-
- var block;
- var charCode;
- var idx = 0;
- var map = chars;
- var output = '';
- for (;
-
-
-
- str.charAt(idx | 0) || (map = '=', idx % 1);
-
- output += map.charAt(63 & block >> 8 - idx % 1 * 8)) {
- charCode = str.charCodeAt(idx += 3 / 4);
- if (charCode > 0xFF) {
- throw new Error("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");
- }
- block = block << 8 | charCode;
- }
- return output;
- }
- var platFormName = "wechat" ;
- function getRequest() {
- switch (true) {
- case typeof wx === 'object':
- platFormName = "wechat" ;
- return wx.request.bind(wx);
- case typeof swan === 'object':
- platFormName = "baidu" ;
- return swan.request.bind(swan);
- case typeof dd === 'object':
- platFormName = "dd" ;
-
- return dd.httpRequest.bind(dd);
- case typeof my === 'object':
-
- platFormName = "alipay" ;
- return (my.request || my.httpRequest).bind(my);
- default:
- return wx.request.bind(wx);
- }
- }
- function transformResponse(mpResponse, config, mpRequestOption) {
- var headers = mpResponse.header || mpResponse.headers;
- var status = mpResponse.statusCode || mpResponse.status;
- var statusText = '';
- if (status === 200) {
- statusText = 'OK';
- }
- else if (status === 400) {
- statusText = 'Bad Request';
- }
- var response = {
- data: mpResponse.data,
- status: status,
- statusText: statusText,
- headers: headers,
- config: config,
- request: mpRequestOption
- };
- return response;
- }
- function transformError(error, reject, config) {
- switch (platFormName) {
- case "wechat" :
- if (error.errMsg.indexOf('request:fail abort') !== -1) {
-
- reject(createError('Request aborted', config, 'ECONNABORTED', ''));
- }
- else if (error.errMsg.indexOf('timeout') !== -1) {
-
- reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', ''));
- }
- else {
-
- reject(createError('Network Error', config, null, ''));
- }
- break;
- case "dd" :
- case "alipay" :
-
- if ([14, 19].includes(error.error)) {
- reject(createError('Request aborted', config, 'ECONNABORTED', '', error));
- }
- else if ([13].includes(error.error)) {
-
- reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', '', error));
- }
- else {
-
- reject(createError('Network Error', config, null, '', error));
- }
- break;
- case "baidu" :
-
- reject(createError('Network Error', config, null, ''));
- break;
- }
- }
- function transformConfig(config) {
- var _a;
- if (["alipay" , "dd" ].includes(platFormName)) {
- config.headers = config.header;
- delete config.header;
- if ("dd" === platFormName && config.method !== 'GET' && ((_a = config.headers) === null || _a === void 0 ? void 0 : _a['Content-Type']) === 'application/json' && Object.prototype.toString.call(config.data) === '[object Object]') {
-
- config.data = JSON.stringify(config.data);
- }
- }
- return config;
- }
- var isJSONstr = function (str) {
- try {
- return typeof str === 'string' && str.length && (str = JSON.parse(str)) && Object.prototype.toString.call(str) === '[object Object]';
- }
- catch (error) {
- return false;
- }
- };
- function mpAdapter(config, _a) {
- var _b = (_a === void 0 ? {} : _a).transformRequestOption, transformRequestOption = _b === void 0 ? function (requestOption) { return requestOption; } : _b;
- var request = getRequest();
- return new Promise(function (resolve, reject) {
- var requestTask;
- var requestData = config.data;
- var requestHeaders = config.headers;
-
- var requestMethod = (config.method && config.method.toUpperCase()) || 'GET';
-
- var mpRequestOption = {
- method: requestMethod,
- url: buildURL(buildFullPath(config.baseURL, config.url), config.params, config.paramsSerializer),
- timeout: config.timeout,
-
- success: function (mpResponse) {
- var response = transformResponse(mpResponse, config, mpRequestOption);
- settle(resolve, reject, response);
- },
-
- fail: function (error) {
- transformError(error, reject, config);
- },
- complete: function () {
- requestTask = undefined;
- }
- };
-
- if (config.auth) {
- var _a = [config.auth.username || '', config.auth.password || ''], username = _a[0], password = _a[1];
- requestHeaders.Authorization = 'Basic ' + encoder(username + ':' + password);
- }
-
- utils.forEach(requestHeaders, function setRequestHeader(val, key) {
- var _header = key.toLowerCase();
- if ((typeof requestData === 'undefined' && _header === 'content-type') || _header === 'referer') {
-
-
- delete requestHeaders[key];
- }
- });
- mpRequestOption.header = requestHeaders;
-
- if (config.responseType) {
- mpRequestOption.responseType = config.responseType;
- }
- if (config.cancelToken) {
-
- config.cancelToken.promise.then(function onCanceled(cancel) {
- if (!requestTask) {
- return;
- }
- requestTask.abort();
- reject(cancel);
-
- requestTask = undefined;
- });
- }
-
- if (isJSONstr(requestData)) {
- requestData = JSON.parse(requestData);
- }
- if (requestData !== undefined) {
- mpRequestOption.data = requestData;
- }
- requestTask = request(transformRequestOption(transformConfig(mpRequestOption)));
- });
- }
- module.exports = mpAdapter;
|