OmerHerera/oauthclient

View on GitHub
src/index.js

Summary

Maintainability
A
1 hr
Test Coverage
"use strict";

var instance
    , request       = require("request")
    , OAuth         = require("oauth-1.0a")
    , objectAssign  = require("object-assign");

function create (options) {
    
    if (!instance) {
        instance = _create(options);
    }
    return instance;
}

function _create (options) {
    options = options || {};    
    
    if (!options.public || !options.secret) {
        return void 0;
    }    
    
    return objectAssign(Object.create({}), {
        oauth: OAuth({
            consumer: {
                /*jshint -W024 */
                public: options.public,
                /*jshint +W024 */
                secret: options.secret
            },
            signature_method: options.signature_method || "HMAC-SHA1"
        }),
        fetch: function (options, callback) {
            options = options || {};
            
            if (!options.url || !options.method) {
                callback(new Error("Missing one/two mandatory params, options: " + JSON.stringify(options)));
                return;
            }
            
            var requestData = {
                url: options.url,
                method: options.method
            };
                                   
            options.headers = this.oauth.toHeader(this.oauth.authorize(requestData));
            request(options, callback);
        }
    });
    
}

module.exports = {
    create: create
};