ddo/chirp-rest

View on GitHub
index.js

Summary

Maintainability
C
1 day
Test Coverage
var qs = require('querystring');

var debug = require('debug')('chirp-rest');
var OAuth = require('oauth-request');

module.exports = ChirpRest;

function ChirpRest(opt) {
    if(!(this instanceof ChirpRest)) {
        return new ChirpRest(opt);
    }

    if(!(opt.consumer && opt.consumer.public && opt.consumer.secret)) {
        throw new Error('consumer.public and consumer.secret are required');
    }

    if(!(opt.token && opt.token.public && opt.token.secret)) {
        throw new Error('token.public and token.secret are required');
    }

    this.consumer = opt.consumer;
    this.token    = opt.token;

    this.oauth = OAuth({
        consumer: this.consumer,
        token: this.token
    });
}

ChirpRest.prototype.get = function(url, param, callback) {
    if(arguments.length === 2) {
        callback = param;
        param = {};
    }

    if(!url) {
        throw new Error('url is required');
    }

    if(!callback) {
        throw new Error('callback is required');
    }

    debug('#get', url, param);

    this.oauth.get({
        url: url,
        qs: param,
        json: true
    }, function(err, res, body) {
        if(err) {
            debug('#get request err', err);
            return callback(err);
        }

        if(res.statusCode != 200) {
            debug('#get twitter err', body);
            return callback(body);
        }

        debug('#get success');

        return callback(null, body);
    });
};

ChirpRest.prototype.post = function(url, param, callback) {
    var self = this;

    if(arguments.length === 2) {
        callback = param;
        param = {};
    }

    if(!url) {
        throw new Error('url is required');
    }

    if(!callback) {
        throw new Error('callback is required');
    }

    debug('#post', url, param);

    this.oauth.post({
        url: url,
        form: param,
        json: true
    }, function(err, res, body) {
        if(err) {
            debug('#post request err', err);
            return callback(err);
        }

        if(res.statusCode != 200) {
            debug('#post twitter err', body);
            return callback(body);
        }

        debug('#post success');

        return callback(null, body);
    });
};