UNPKG

clicktimerestapi

Version:
119 lines (96 loc) 2.94 kB
var https = require('https'), _ = require('lodash'), q = require('q'), uName, pWord, session, ct_url = '/api/1.3/'; function constructRequest(option, callback){ var baseOption = { hostname: 'app.clicktime.com', headers: { 'Content-Type': 'application/json', 'Authorization': 'Basic ' + new Buffer( uName + ':' + ( (session && session.Token) || pWord) ).toString('base64') } }; var req = https.request(_.assign(baseOption, option), function(res){ res.setEncoding('utf8'); res.on('data', callback); }); req.on('error', function(e) { console.log('problem with request: ' + e.message); }); req.end(); } function buildRequestReturnFunc(option){ if (!(session && session.Token)){ throw 'Please call Get_session first.'; } // Create a promise so it can be resolved when the Session Ajex returns var deferred = q.defer(); constructRequest(option, function(d){ deferred.resolve(d); }); return deferred.promise; } module.exports = { // Returns a promise that once resolved, it will return the UserID, CompanyID, etc based on your authorization header. You should use these to construct other request urls. GET_session: function (userName, password) { // Sets the closure object uName = userName; pWord = password; var option = { method: 'GET', path: ct_url + 'session' }; var deferred = q.defer(); constructRequest(option, function(d){ deferred.resolve(session = JSON.parse(d)); }); return deferred.promise; }, //Returns the Company object. GET_Company: function () { return buildRequestReturnFunc({ method: 'GET', path: ct_url + 'Companies/' + session.CompanyID }); }, GET_User: function (){ console.log(ct_url + 'Companies/' + session.CompanyID + '/Users/' + session.UserID); return buildRequestReturnFunc({ method: 'GET', path: ct_url + 'Companies/' + session.CompanyID + '/Users/' + session.UserID }); }, GET_Clients: function () { return buildRequestReturnFunc({ method: 'GET', path: ct_url + 'Companies/' + session.CompanyID + '/Users/' + session.UserID + '/Clients' }); }, GET_Jobs: function () { return buildRequestReturnFunc({ method: 'GET', path: ct_url + 'Companies/' + session.CompanyID + '/Users/' + session.UserID + '/Jobs' }); }, GET_Tasks: function () { return buildRequestReturnFunc({ method: 'GET', path: ct_url + 'Companies/' + session.CompanyID + '/Users/' + session.UserID + '/Tasks' }); }, GET_Phases: function () { return buildRequestReturnFunc({ method: 'GET', path: ct_url + 'Companies/' + session.CompanyID + '/Phases' }); }, GET_SuvPhases: function () { return buildRequestReturnFunc({ method: 'GET', path: ct_url + 'Companies/' + session.CompanyID + '/SubPhases' }); } };