UNPKG

mandrill-nodemailer-transport

Version:

Mandrill API and Nodemailer v4+. The plugin is very small, optimized and written in TypeScript

61 lines (47 loc) 1.36 kB
import {request, RequestOptions} from 'https'; import {ClientRequest, IncomingMessage} from 'http'; export namespace Requestly { function sendRequest(options: RequestOptions, params?: any): Promise<any> { return new Promise((resolve, reject) => { let req: ClientRequest = request(options, (res: IncomingMessage) => { let chunks: Array<any> = []; res.on('data', (chunk) => chunks.push(chunk)); res.on('end', () => { let answer: any = JsonParse(Buffer.concat(chunks).toString()); if (res.statusCode === 200) { resolve(answer); } else { reject(answer); } }); res.on('error', (error) => { reject(error); }); }); req.on('error', (error) => { reject(error); }); if (params) { req.write(params); } req.end(); }); } export function postJSON(options: RequestOptions, data: Object): Promise<any> { let json: string = JSON.stringify(data); options.method = 'POST'; options.headers = { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(json) }; return sendRequest(options, json); } } function JsonParse(value: string): any { try { return JSON.parse(value); } catch (error) { return undefined; } }