1 | var fs = require('fs')
|
2 | var stream = require('stream')
|
3 | var http = require('request')
|
4 |
|
5 | module.exports = request
|
6 |
|
7 | function request(url, params, body, cb) {
|
8 | var requester = doRequest(url, params, cb)
|
9 |
|
10 | if (params.url || params.get) {
|
11 | return requester('GET')
|
12 | }
|
13 |
|
14 | return read(body).pipe(requester('POST'))
|
15 | }
|
16 |
|
17 | function doRequest(url, params, cb) {
|
18 | return function (method) {
|
19 | return http({
|
20 | url: url,
|
21 | qs: params,
|
22 | method: method,
|
23 | strictSSL: false
|
24 | }, cb)
|
25 | }
|
26 | }
|
27 |
|
28 | function read(image) {
|
29 | if (typeof image === 'string') {
|
30 | return readFromString(image)
|
31 | }
|
32 |
|
33 | if (isStream(image) === false) {
|
34 | throw new TypeError('Image should be a string or readable stream')
|
35 | }
|
36 |
|
37 | return image
|
38 | }
|
39 |
|
40 | function readFromString(image) {
|
41 | if (isUrl(image)) {
|
42 | return http(image, { strictSSL: false })
|
43 | }
|
44 | return fs.createReadStream(image)
|
45 | }
|
46 |
|
47 | function isStream(obj) {
|
48 | return obj instanceof stream.Stream
|
49 | }
|
50 |
|
51 | function isUrl(str) {
|
52 | return /^http[s]?/i.test(str)
|
53 | }
|