Use FormData and multipart/form-data instead of application/urlencoded for requests

This commit is contained in:
Mahdi Dibaiee
2015-07-02 05:10:13 +04:30
parent 5f07eaa456
commit 4591ced347
4 changed files with 122 additions and 52 deletions

View File

@ -1,34 +1,43 @@
import https from 'https';
import qs from 'qs';
import FormData from 'form-data';
export default function fetch(path, data = {}) {
const form = new FormData();
const keys = Object.keys(data);
for (let key of keys) {
console.log(key, data[key]);
form.append(key, data[key]);
}
export default function fetch(path, data) {
const post = qs.stringify(data);
return new Promise((resolve, reject) => {
const req = https.request({
hostname: 'api.telegram.org',
method: data ? 'POST' : 'GET',
path: '/bot' + path,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
form.getLength((err, length) => {
if (err) {
return reject(err);
}
}, response => {
return getBody(response).then(res => {
try {
let json = JSON.parse(res);
resolve(json);
} catch(e) {
reject(e);
}
}).catch(reject);
});
if (post) {
req.write(post);
}
req.end();
}).catch(err => {
console.error('Error sending request', err);
form.submit({
protocol: 'https:',
host: 'api.telegram.org',
path: '/bot' + path,
headers: {
'Content-Length': length
}
}, (error, response) => {
if (error) {
return reject(error);
}
return getBody(response).then(body => {
try {
let json = JSON.parse(body);
resolve(json);
} catch(e) {
reject(e);
}
}).catch(reject);
});
});
});
}