|
5 | 5 | qs = require('qs'), |
6 | 6 | log = require(__dirname + '/log'), |
7 | 7 | util = require('util'), |
8 | | - bundle = require('../package.json'), |
9 | 8 | EventEmitter= require('events').EventEmitter, |
10 | 9 | urllib = require('url'), |
11 | 10 | userAgent = require(__dirname + '/userAgent'), |
12 | 11 | _ = require('lodash'), |
13 | | - mime = require('mime'), |
14 | 12 | fs = require('fs'), |
15 | 13 | async = require('async'), |
| 14 | + FormData = require('form-data'), |
16 | 15 | requestRate = 5; |
17 | 16 |
|
18 | 17 | module.exports = { |
|
47 | 46 | } |
48 | 47 |
|
49 | 48 | this.url = urllib.parse(url); |
50 | | - var boundary = 'JWBBV0Q07j8njeiL'; |
51 | 49 |
|
52 | 50 | if (this.options.multipart) { |
53 | | - headers['content-type'] = 'multipart/form-data; boundary='+boundary; |
54 | | - payload = ''; |
| 51 | + var form = new FormData(); |
55 | 52 |
|
56 | 53 | _.each(this.options.data, function(value, inputName) { |
57 | | - payload += '--'+boundary+'\r\n'+ |
58 | | - 'Content-Disposition: form-data;'; |
59 | | - if(inputName == 'file_path' && fs.existsSync(value)) { |
60 | | - var parts = value.split(/\/|\\/); |
| 54 | + if (inputName === 'file_path' && fs.existsSync(value)) { |
| 55 | + var parts = value.split(/[\/\\]/); |
61 | 56 | var fileName = parts[parts.length - 1]; |
62 | | - |
63 | | - payload += 'name="file"; filename="'+fileName.replace(/"/g, '\"')+'"\r\n'; |
64 | | - payload += 'Content-Type: '+mime.lookup(value); |
65 | | - |
66 | | - value = fs.readFileSync(value); |
| 57 | + form.append('file', fs.readFileSync(value), fileName); |
67 | 58 | } else { |
68 | | - payload += ' name="'+inputName.replace(/"/g, '\"')+'"'; |
| 59 | + form.append(inputName, value); |
69 | 60 | } |
70 | | - |
71 | | - payload += '\r\n\r\n'+value+'\r\n'; |
72 | 61 | }); |
73 | | - payload += '--'+boundary+'--'; |
74 | 62 |
|
| 63 | + headers = form.getHeaders(headers); |
| 64 | + payload = form.getBuffer(); |
75 | 65 | } |
76 | 66 | else if (this.options.data) { |
77 | 67 | if (typeof this.options.data == 'string') { |
|
102 | 92 | rejectUnauthorized: process.env.PIPEDRIVE_API_HOST == 'api.pipedrive.com' ? true : false |
103 | 93 | }; |
104 | 94 |
|
105 | | - log('Performing API request: ' + JSON.stringify(_.extend(requestOptions, { url: url }), null, 4)); |
| 95 | + log('Adding API request to queue: ' + JSON.stringify(_.extend(_.omit(requestOptions, this.options.multipart ? ['payload'] : []), { url: url }), null, 4)); |
106 | 96 |
|
107 | 97 | requestQueue.push({ url: url, requestOptions: requestOptions }, (function(err, meta, body) { |
108 | 98 | if (!meta) { |
|
0 commit comments