node-telegram-api/lib/fetch.js

58 lines
1.1 KiB
JavaScript
Raw Normal View History

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) {
form.append(key, data[key]);
}
2015-06-26 17:20:54 +00:00
return new Promise((resolve, reject) => {
form.getLength((err, length) => {
if (err) {
return reject(err);
2015-06-26 17:20:54 +00:00
}
form.submit({
protocol: 'https:',
host: 'api.telegram.org',
path: '/bot' + path,
headers: {
'Content-Length': length
}
}, (error, response) => {
if (error) {
return reject(error);
2015-06-26 17:20:54 +00:00
}
return getBody(response).then(body => {
try {
let json = JSON.parse(body);
resolve(json);
} catch(e) {
reject(e);
}
}).catch(reject);
});
});
2015-06-26 17:20:54 +00:00
});
}
2015-06-29 22:20:34 +00:00
export function getBody(stream) {
let data = '';
return new Promise((resolve, reject) => {
stream.on('data', chunk => {
data += chunk;
});
stream.on('end', () => {
resolve(data);
});
stream.on('error', reject);
});
}