libzotero
Version:
javascript libZotero
92 lines (71 loc) • 2.19 kB
JavaScript
;
var log = require('./Log.js').Logger('libZotero:Client');
var Fetcher = require('./Fetcher.js');
var Client = function Client() {
var apiKey = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
this._apiKey = apiKey;
this.net = require('./Net.js');
};
Client.prototype.getUserGroups = function (userID) {
var aparams = {
'target': 'userGroups',
'libraryType': 'user',
'libraryID': userID,
'order': 'title'
};
if (this._apiKey) {
aparams['key'] = this._apiKey;
}
return Zotero.ajaxRequest(aparams).then(function (response) {
log.debug('fetchUserGroups proxied callback', 3);
var groupJson = response.data;
var groups = groupJson.map(function (groupObj) {
return new Zotero.Group(groupObj);
});
var fetchedGroups = groups.addGroupsFromJson(response.data);
response.fetchedGroups = fetchedGroups;
return response;
});
};
Client.prototype.getUserPublications = function (userID) {
var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
log.debug('Zotero.Client.loadPublications', 3);
var defaultConfig = {
target: 'publications',
start: 0,
limit: 50,
order: Zotero.config.defaultSortColumn,
sort: Zotero.config.defaultSortOrder,
include: 'bib'
};
var urlconfig = Z.extend({}, defaultConfig, config, {
'target': 'publications',
'libraryType': 'user',
'libraryID': userID
});
var fetcher = new Fetcher(urlconfig);
return fetcher.fetchAll().then(function (results) {
return results.map(function (itemObj) {
return new Zotero.Item(itemObj);
});
});
};
Client.prototype.getKeyPermissions = function () {
var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
if (!key) {
return false;
}
var urlconfig = { 'target': 'key', 'apiKey': key, 'libraryType': '' };
return Zotero.ajaxRequest(urlconfig).then(function (response) {
var keyObject = JSON.parse(response.data);
return keyObject;
});
};
Client.prototype.deleteKey = function () {
var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
if (!key) {
return false;
}
return this.net.ajax();
};
module.exports = Client;