|
1 | | -var request = require('request'); |
2 | | -var TwocheckoutError = require("./error"); |
3 | | - |
| 1 | +var TwocheckoutError = require('./error'); |
| 2 | +const got = require('got'); |
4 | 3 | exports.execute = function (args, callback) { |
5 | | - options = { |
6 | | - uri: args.domain + args.path, |
| 4 | + var options = { |
7 | 5 | method: args.method, |
8 | | - headers: { "Accept" : "application/json" }, |
9 | | - timeout: 30000 |
| 6 | + responseType: 'json', |
| 7 | + prefixUrl: 'https://www.2checkout.com', |
10 | 8 | }; |
11 | 9 |
|
12 | 10 | if (args.type === "admin") { |
13 | | - options.auth = { |
14 | | - user: args.apiUser, |
15 | | - pass: args.apiPass, |
16 | | - sendImmediately: true |
17 | | - }; |
| 11 | + options.username = args.apiUser; |
| 12 | + options.password = args.apiPass; |
18 | 13 |
|
19 | 14 | if(args.method === "POST") { |
20 | 15 | options.form = args.payload; |
21 | 16 | } else { |
22 | | - options.qs = args.payload; |
| 17 | + options.searchParams = args.payload; |
23 | 18 | } |
24 | 19 | } else { |
25 | 20 | args.payload.privateKey = args.privateKey; |
26 | 21 | args.payload.sellerId = args.sellerId; |
27 | 22 | options.body = JSON.stringify(args.payload); |
28 | 23 | } |
29 | 24 |
|
30 | | - request(options, function (error, response, body) { |
31 | | - var parsedResponse; |
32 | | - if (error) { |
33 | | - callback(new TwocheckoutError('500', 'Unable to connect to 2Checkout API')); |
34 | | - } else { |
35 | | - |
36 | | - try { |
37 | | - parsedResponse = JSON.parse(body); |
38 | | - } catch (e) { |
39 | | - callback(new TwocheckoutError('500', 'Error parsing JSON response from 2Checkout API.')); |
40 | | - return; |
41 | | - } |
42 | | - |
43 | | - if (args.type === "admin") { |
44 | | - if (parsedResponse.errors) { |
45 | | - callback(new TwocheckoutError(parsedResponse.errors[0].code, parsedResponse.errors[0].message)); |
46 | | - return; |
| 25 | + let path = (args.path.charAt(0) === '/') ? args.path.substr(1) : args.path; |
| 26 | + (async () => { |
| 27 | + try { |
| 28 | + const response = await got(path, options); |
| 29 | + callback(null, response.body); |
| 30 | + } catch (error) { |
| 31 | + const parsedResponse = typeof error.response !== 'undefined' ? error.response.body : null; |
| 32 | + if (parsedResponse) { |
| 33 | + if (args.type === "admin") { |
| 34 | + if (parsedResponse.errors) { |
| 35 | + callback(new TwocheckoutError(parsedResponse.errors[0].code, parsedResponse.errors[0].message)); |
| 36 | + } |
| 37 | + } else { |
| 38 | + if (parsedResponse.exception) { |
| 39 | + callback(new TwocheckoutError(parsedResponse.exception.errorCode, parsedResponse.exception.errorMsg)); |
| 40 | + } |
47 | 41 | } |
48 | 42 | } else { |
49 | | - if (parsedResponse.exception) { |
50 | | - callback(new TwocheckoutError(parsedResponse.exception.errorCode, parsedResponse.exception.errorMsg)); |
51 | | - return; |
52 | | - } |
| 43 | + callback(new TwocheckoutError('500', 'Error parsing JSON response from 2Checkout API.')); |
53 | 44 | } |
54 | | - |
55 | | - callback(null, parsedResponse); |
56 | | - |
57 | 45 | } |
58 | | - |
59 | | - }); |
| 46 | + })(); |
60 | 47 | }; |
0 commit comments