mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 10:45:47 +00:00
86 lines
2.6 KiB
JavaScript
86 lines
2.6 KiB
JavaScript
(function() {
|
|
'use strict';
|
|
|
|
var DIR = './',
|
|
DIR_LIB = DIR + '../',
|
|
DIR_JSON = DIR_LIB + '../json/',
|
|
|
|
https = require('https'),
|
|
qs = require('querystring'),
|
|
|
|
tryRequire = require('./tryRequire'),
|
|
pipe = tryRequire('pipe-io', {log: true, exit: true}),
|
|
|
|
Modules = require(DIR_JSON + 'modules'),
|
|
Util = require(DIR_LIB + 'util'),
|
|
|
|
GithubAuth = {
|
|
host: 'github.com',
|
|
port: 443,
|
|
path: '/login/oauth/access_token',
|
|
method: 'POST'
|
|
};
|
|
|
|
/**
|
|
* function do authentication
|
|
* @param code
|
|
* @param callback
|
|
*/
|
|
|
|
exports.auth = function(code, callback){
|
|
code = code.replace('code=', '');
|
|
|
|
Util.log(code);
|
|
|
|
authenticate(code, function(error, token) {
|
|
var result = { 'token': token };
|
|
Util.log(error || result);
|
|
|
|
Util.exec(callback, error, result);
|
|
});
|
|
};
|
|
|
|
function authenticate(code, callback) {
|
|
var req,
|
|
storage = Util.findObjByNameInArr(Modules, 'storage'),
|
|
github = Util.findObjByNameInArr(storage, 'GitHub'),
|
|
|
|
id = github && github.key,
|
|
secret = github && github.secret,
|
|
env = process.env,
|
|
|
|
clientId = env.github_key || id,
|
|
clientSecret = env.github_secret || secret,
|
|
|
|
data = qs.stringify({
|
|
client_id : clientId,
|
|
client_secret : clientSecret,
|
|
code : code
|
|
});
|
|
|
|
Util.log(clientId, clientSecret, data);
|
|
|
|
GithubAuth.headers = { 'content-length': data.length };
|
|
|
|
req = https.request(GithubAuth, function(res) {
|
|
pipe.getBody(res, function(error, body) {
|
|
var parsed, token;
|
|
|
|
if (!error) {
|
|
parsed = qs.parse(body);
|
|
|
|
if (parsed)
|
|
token = parsed.access_token;
|
|
}
|
|
|
|
Util.exec(callback, error, token);
|
|
});
|
|
});
|
|
|
|
req.end(data);
|
|
|
|
req.on('error', function(e) {
|
|
Util.exec(callback, e.message);
|
|
});
|
|
}
|
|
})();
|