UNPKG

nodesu

Version:
79 lines (71 loc) 2.95 kB
'use strict'; const Component = require('./Component') , ApiConstants = require('../Constants').API , User = require('../struct/User') , UserScore = require('../struct/UserScore'); /** * User-related API component * @memberof module:Components * @example * api.user * .get('4222959') * .then(console.log); */ class UserComponent extends Component { /** * Gets general user information. * @param {String} user The username or id to lookup. * @param {Mode} [mode] The gamemode. * @param {Number} [eventDays] The max number of event days. * @param {LookupType} [lookupType] The lookup type, id/string to lookup the user. * @return {Promise<Object|User>} The object from the API, or User object if parsing is enabled. */ get(user, mode, eventDays, lookupType) { let options = { u: user }; if (mode !== undefined) options.m = mode; if (eventDays !== undefined) options.event_days = eventDays; if (lookupType !== undefined) options.type = lookupType return this.api.requester.get(ApiConstants.USER_GET, options, true, true, User) .then(d => d[0]); // there can only be one user } /** * Gets the top scores for the user specified. * @param {String} user The username or id to lookup. * @param {Mode} [mode] The gamemode. * @param {Number} [limit] Amount of results to limit to. * @param {LookupType} [lookupType] The lookup type, id/string to lookup the user. * @return {Promise<Object[]|UserScore[]>} The object array from the API, or UserScore object array if parsing is enabled. */ getBest(user, mode, limit, lookupType) { let options = { u: user }; if (mode !== undefined) options.m = mode; if (limit !== undefined) options.limit = limit; if (lookupType !== undefined) options.type = lookupType; return this.api.requester.get(ApiConstants.USER_GET_BEST, options, true, true, UserScore); } /** * Gets the recent plays for the user specified. * @param {String} user The username or id to lookup. * @param {Mode} [mode] The gamemode. * @param {Number} [limit] Amount of results to limit to. * @param {LookupType} [lookupType] The lookup type, id/string to lookup the user. * @return {Promise<Object[]|UserScore[]>} The object array from the API, or UserScore object array if parsing is enabled. */ getRecent(user, mode, limit, lookupType) { let options = { u: user }; if (mode !== undefined) options.m = mode; if (limit !== undefined) options.limit = limit; if (lookupType !== undefined) options.type = lookupType; return this.api.requester.get(ApiConstants.USER_GET_RECENT, options, true, true, UserScore); } } module.exports = UserComponent;