UNPKG

simple-cw-node

Version:

A simple ChatWork API client for Node.js (UNOFFICIAL)

74 lines (60 loc) 1.93 kB
var pack = require('../package.json'), agent = require('superagent'), _ = require('lodash'), http_verbs = ['get', 'post', 'put', 'del']; // enable deferred. _.mixin(require('underscore.deferred')); module.exports = function () { var chatwork = { apiVersion: 'v2', sdkVersion: pack.version, token: undefined, // ---------------------- Deferred: _.Deferred, when: _.when }; var ua = 'Simple-CW-Node/' + chatwork.sdkVersion; chatwork.init = function (params) { params = params || {}; this.type = params.type; this.token = params.token; }; chatwork.api = function (method, api) { var callback, dfd, done, url, request, authHeader, authValue params = arguments[2]; if (_.isFunction(arguments[3])) { callback = arguments[3]; } else if (_.isFunction(arguments[2])) { callback = arguments[2]; } else { dfd = _.Deferred(); } done = function (err, res) { err = err || res.body.errors; if (callback) callback(err, res); if (dfd) return err ? dfd.reject(err) : dfd.resolve(res); }; url = 'https://api.chatwork.com/' + this.apiVersion + '/' + api; request = agent[method]; if (this.type === 'oauth') { authHeader = 'Authorization' authValue = 'Bearer ' + this.token } else { authHeader = 'X-ChatWorkToken' authValue = this.token } request(url) .type('form') .set('User-Agent', ua) .set(authHeader, authValue) .send(params) .end(done); return dfd; }; // methods _.each(http_verbs, function (verb) { chatwork[verb] = _.partial(chatwork.api, verb); }); return chatwork; };