2015-07-02 00:40:13 +00:00
|
|
|
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]);
|
|
|
|
}
|
2015-06-26 17:20:54 +00:00
|
|
|
|
|
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
2015-07-02 00:40:13 +00:00
|
|
|
form.getLength((err, length) => {
|
|
|
|
if (err) {
|
|
|
|
return reject(err);
|
2015-06-26 17:20:54 +00:00
|
|
|
}
|
2015-07-02 00:40:13 +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
|
|
|
}
|
|
|
|
|
2015-07-02 00:40:13 +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);
|
|
|
|
});
|
|
|
|
}
|