UNPKG

leancloud-storage

Version:
80 lines (63 loc) 2.73 kB
'use strict'; var _stringify = require('babel-runtime/core-js/json/stringify'); var _stringify2 = _interopRequireDefault(_stringify); var _typeof2 = require('babel-runtime/helpers/typeof'); var _typeof3 = _interopRequireDefault(_typeof2); var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var _ = require('underscore'); var _require = require('promise-timeout'), timeout = _require.timeout; var debug = require('debug'); var debugRequest = debug('leancloud:request'); var debugRequestError = debug('leancloud:request:error'); var _require2 = require('../adapter'), getAdapter = _require2.getAdapter; var requestsCount = 0; var ajax = function ajax(_ref) { var method = _ref.method, url = _ref.url, query = _ref.query, data = _ref.data, _ref$headers = _ref.headers, headers = _ref$headers === undefined ? {} : _ref$headers, time = _ref.timeout, onprogress = _ref.onprogress; if (query) { var queryString = (0, _keys2.default)(query).map(function (key) { var value = query[key]; if (value === undefined) return undefined; var v = (typeof value === 'undefined' ? 'undefined' : (0, _typeof3.default)(value)) === 'object' ? (0, _stringify2.default)(value) : value; return encodeURIComponent(key) + '=' + encodeURIComponent(v); }).filter(function (qs) { return qs; }).join('&'); url = url + '?' + queryString; } var count = requestsCount++; debugRequest('request(%d) %s %s %o %o %o', count, method, url, query, data, headers); var request = getAdapter('request'); var promise = request(url, { method: method, headers: headers, data: data, onprogress: onprogress }).then(function (response) { debugRequest('response(%d) %d %O %o', count, response.status, response.data || response.text, response.header); if (response.ok === false) { var error = new Error(); error.response = response; throw error; } return response.data; }).catch(function (error) { if (error.response) { if (!debug.enabled('leancloud:request')) { debugRequestError('request(%d) %s %s %o %o %o', count, method, url, query, data, headers); } debugRequestError('response(%d) %d %O %o', count, error.response.status, error.response.data || error.response.text, error.response.header); error.statusCode = error.response.status; error.responseText = error.response.text; error.response = error.response.data; } throw error; }); return time ? timeout(promise, time) : promise; }; module.exports = ajax;