Files
biomedjs/config/directory.js
Dobie Wollert a403c9079f sync
2014-07-25 03:00:29 -04:00

73 lines
1.8 KiB
JavaScript

var googleapis = require('googleapis'),
sprintf = require('sprintf'),
OAuth2Client = googleapis.OAuth2Client;
var apiClient;
module.exports = function(config) {
var oauth2Client = new OAuth2Client(
config.auth.clientId, config.auth.clientSecret, config.auth.callback);
oauth2Client.credentials = {
access_token: config.auth.accessToken,
refresh_token: config.auth.refreshToken
};
function toIsoDate(d) {
function pad(n) { return n < 10 ? '0' + n : n }
return d.getUTCFullYear()+'-'
+ pad(d.getUTCMonth()+1)+'-'
+ pad(d.getUTCDate())+'T'
+ pad(d.getUTCHours())+':'
+ pad(d.getUTCMinutes())+':'
+ pad(d.getUTCSeconds())+'Z';
}
return {
listUsers: function(callback) {
api(function(client, callback) {
var params = {
domain: 'atlanticbiomedical.com',
fields: 'users(name,primaryEmail)',
};
var request = client.admin.users.list();
request.params = params;
request.withAuthClient(oauth2Client).execute(function(err, result) {
callback(err, result);
});
}, callback);
}
};
function api(workorder, callback) {
var handler = function(client) {
workorder(client, function(err, result) {
if (oauth2Client.credentials.access_token != config.auth.accessToken) {
console.log("Updating access token");
config.auth.accessToken = oauth2Client.credentials.access_token;
}
callback(err, result);
});
};
if (apiClient) {
console.log("Using cached api client");
handler(apiClient);
} else {
console.log("Getting api client");
googleapis.discover('admin', 'directory_v1').execute(function(err, client) {
console.log(err);
if (err) return callback(err);
apiClient = client;
handler(apiClient);
});
}
}
};