UNPKG

3.17 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports["default"] = void 0;
7
8var _https = require("https");
9
10var _http = require("http");
11
12var _url = require("url");
13
14var _utils = require("./utils");
15
16var _acejaxError = _interopRequireDefault(require("./acejax-error"));
17
18function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
19
20var defaults = {
21 method: 'GET',
22 headers: {},
23 json: false
24};
25
26var acejax = function acejax() {
27 var acejaxRequest = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaults;
28 return new Promise(function (resolve, reject) {
29 var initialOptions = Object.assign({}, defaults, acejaxRequest);
30 var parsedUrl = (0, _url.parse)(initialOptions.url);
31 var options = Object.assign({}, parsedUrl, {
32 headers: initialOptions.headers,
33 method: initialOptions.method && initialOptions.method.toUpperCase(),
34 timeout: initialOptions.timeout
35 });
36
37 if (parsedUrl.protocol === 'http:') {
38 options.agent = _http.globalAgent;
39 }
40
41 var req = (0, _https.request)(options, function (res) {
42 var data = '';
43 res.on('data', function (chunk) {
44 return data += chunk;
45 });
46 res.on('end', function () {
47 if (res.statusCode >= 400) {
48 var acejaxError = new _acejaxError["default"](res, data);
49 reject(acejaxError);
50 } else {
51 resolve({
52 statusCode: res.statusCode,
53 statusMessage: res.statusMessage,
54 headers: res.headers,
55 rawHeaders: res.rawHeaders,
56 httpVersion: res.httpVersion,
57 body: initialOptions.json ? JSON.parse(data) : data
58 });
59 }
60 });
61 });
62 req.on('error', reject);
63
64 if (initialOptions.body) {
65 var body = initialOptions.body;
66
67 if ((0, _utils.isObject)(body)) {
68 body = JSON.stringify(body);
69 req.setHeader('Content-Type', 'application/json');
70 }
71
72 req.write(body);
73 }
74
75 if (initialOptions.form) {
76 var form = initialOptions.form;
77
78 if ((0, _utils.isObject)(form)) {
79 form = new URLSearchParams(form).toString();
80 }
81
82 req.setHeader('Content-Type', 'application/x-www-form-urlencoded');
83 req.write(form);
84 }
85
86 req.end();
87 });
88};
89
90acejax.get = function (url, headers) {
91 return acejax({
92 method: 'get',
93 url: url,
94 headers: headers
95 });
96};
97
98acejax["delete"] = function (url, headers) {
99 return acejax({
100 method: 'delete',
101 url: url,
102 headers: headers
103 });
104};
105
106acejax.put = function (url, body, headers) {
107 return acejax({
108 method: 'put',
109 url: url,
110 body: body,
111 headers: headers
112 });
113};
114
115acejax.post = function (url, body, headers) {
116 return acejax({
117 method: 'post',
118 url: url,
119 body: body,
120 headers: headers
121 });
122};
123
124acejax.patch = function (url, body, headers) {
125 return acejax({
126 method: 'patch',
127 url: url,
128 body: body,
129 headers: headers
130 });
131};
132
133var _default = acejax; // Exports for common js support
134
135exports["default"] = _default;
136module.exports = acejax;
137module.exports["default"] = acejax;
\No newline at end of file