/** * @ requires */ var request = require('./http.js').request, makeUserOptions = require('./utils.js').makeUserOptions, defaultDataFormat = require('../include/meta.js').defaultDataFormat; /** * Create an instance of User * * @constructor {User} * @this {User} * @param {string} masterApiKey Your pachube makster api key. */ function User(masterApiKey) { /** @private */this.masterApiKey = masterApiKey; } /** * List all users: GET /v2/users * * @this {User} * @param {function} The callback function. * @param {string} Optional data format parameter, json or xml, default to json. */ User.prototype.list = function(callback, optionalDataFormat) { var options = makeUserOptions('GET'); var dataFormat = optionalDataFormat || defaultDataFormat; request(this.masterApiKey, options, callback, dataFormat); }; /** * Create user: POST /v2/users * * @this {User} * @param {string} dataSource The data source, a path, a string or an object. * @param {function} callback The callback function. * @param {string} optionalDataFormat Optional data format parameter, json or xml, default to json. */ User.prototype.create = function(dataSource, callback, optionalDataFormat) { var options = makeUserOptions('POST'); var dataFormat = optionalDataFormat || defaultDataFormat; request(this.masterApiKey, options, callback, dataFormat, dataSource); }; /** * Read user: GET /v2/users/<user_id> * * @this {User} * @param {string} userID The login name for the user (i.e. their Pachube ID). * @param {function} callback The callback function. * @param {string} optionalDataFormat Optional data format parameter, json or xml, default to json. */ User.prototype.read = function(userID, callback, optionalDataFormat) { var options = makeUserOptions('GET', userID); var dataFormat = optionalDataFormat || defaultDataFormat; request(this.masterApiKey, options, callback, dataFormat); }; /** * Update user: PUT /v2/users/<user_login> * * @this {User} * @param {string} userID The login name for user (i.e. the Pachube ID). * @param {string} dataSource The data source, a path, a string or an object. * @param {function} callback The callback function. * @param {string} optionalDataFormat Optional data format parameter, json or xml, default to json. */ User.prototype.update = function(userID, dataSource, callback, optionalDataFormat) { var options = makeUserOptions('PUT', userID); var dataFormat = optionalDataFormat || defaultDataFormat; request(this.masterApiKey, options, callback, dataFormat, dataSource); }; /** * Delete user: DELETE /v2/users/<user_login> * * @this {User} * @param {string} userID The login name for user (i.e. the Pachube ID). * @param {function} callback The callback function. */ User.prototype.delete = function(userID, callback) { var options = makeUserOptions('PUT', userID); request(this.masterApiKey, options, callback); }; /** * @ exports */ module.exports = User;