Blame view

node_modules/uview-ui/libs/luch-request/adapters/index.js 2.97 KB
c7add6cf   “wangming”   初始版本开发完毕
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
  import buildURL from '../helpers/buildURL'

  import buildFullPath from '../core/buildFullPath'

  import settle from '../core/settle'

  import { isUndefined } from '../utils'

  

  /**

   * 返回可选值存在的配置

   * @param {Array} keys - 可选值数组

   * @param {Object} config2 - 配置

   * @return {{}} - 存在的配置项

   */

  const mergeKeys = (keys, config2) => {

      const config = {}

      keys.forEach((prop) => {

          if (!isUndefined(config2[prop])) {

              config[prop] = config2[prop]

          }

      })

      return config

  }

  export default (config) => new Promise((resolve, reject) => {

      const fullPath = buildURL(buildFullPath(config.baseURL, config.url), config.params)

      const _config = {

          url: fullPath,

          header: config.header,

          complete: (response) => {

              config.fullPath = fullPath

              response.config = config

              try {

                  // 对可能字符串不是json 的情况容错

                  if (typeof response.data === 'string') {

                      response.data = JSON.parse(response.data)

                  }

                  // eslint-disable-next-line no-empty

              } catch (e) {

              }

              settle(resolve, reject, response)

          }

      }

      let requestTask

      if (config.method === 'UPLOAD') {

          delete _config.header['content-type']

          delete _config.header['Content-Type']

          const otherConfig = {

          // #ifdef MP-ALIPAY

              fileType: config.fileType,

              // #endif

              filePath: config.filePath,

              name: config.name

          }

          const optionalKeys = [

          // #ifdef APP-PLUS || H5

              'files',

              // #endif

              // #ifdef H5

              'file',

              // #endif

              // #ifdef H5 || APP-PLUS

              'timeout',

              // #endif

              'formData'

          ]

          requestTask = uni.uploadFile({ ..._config, ...otherConfig, ...mergeKeys(optionalKeys, config) })

      } else if (config.method === 'DOWNLOAD') {

          // #ifdef H5 || APP-PLUS

          if (!isUndefined(config.timeout)) {

              _config.timeout = config.timeout

          }

          // #endif

          requestTask = uni.downloadFile(_config)

      } else {

          const optionalKeys = [

              'data',

              'method',

              // #ifdef H5 || APP-PLUS || MP-ALIPAY || MP-WEIXIN

              'timeout',

              // #endif

              'dataType',

              // #ifndef MP-ALIPAY

              'responseType',

              // #endif

              // #ifdef APP-PLUS

              'sslVerify',

              // #endif

              // #ifdef H5

              'withCredentials',

              // #endif

              // #ifdef APP-PLUS

              'firstIpv4'

          // #endif

          ]

          requestTask = uni.request({ ..._config, ...mergeKeys(optionalKeys, config) })

      }

      if (config.getTask) {

          config.getTask(requestTask, config)

      }

  })