src/pluginstar.js
/** * Imports ***/
import { ItemResource, ListResource } from './resource';
import { PluginMeta } from './pluginmeta';
import { PluginList } from './plugin';
import User from './user';
/**
* Plugin star item resource object representing a plugin star.
*/
export class PluginStar extends ItemResource {
/**
* Constructor
*
* @param {string} url - url of the resource
* @param {Object} [auth=null] - authentication object
* @param {string} [auth.token] - authentication token
*/
constructor(url, auth = null) {
super(url, auth);
}
/**
* Fetch the plugin meta associated to this plugin star from the REST API.
*
* @param {number} [timeout=30000] - request timeout
*
* @return {Object} - JS Promise, resolves to a ``PluginMeta`` object
*/
getPluginMeta(timeout = 30000) {
const linkRelation = 'meta';
const resourceClass = PluginMeta;
return this._getResource(linkRelation, resourceClass, null, timeout);
}
/**
* Fetch the user associated to this plugin star from the REST API.
*
* @param {number} [timeout=30000] - request timeout
*
* @return {Object} - JS Promise, resolves to a ``User`` object
*/
getUser(timeout = 30000) {
const linkRelation = 'user';
const resourceClass = User;
return this._getResource(linkRelation, resourceClass, null, timeout);
}
/**
* Make a DELETE request to delete this plugin star item resource through the
* REST API.
*
* @param {number} [timeout=30000] - request timeout
*
* @return {Object} - JS Promise
*/
delete(timeout = 30000) {
return this._delete(timeout);
}
}
/**
* Plugin star list resource object representing a list of plugin stars.
*/
export class PluginStarList extends ListResource {
/**
* Constructor
*
* @param {string} url - url of the resource
* @param {Object} [auth=null] - authentication object
* @param {string} [auth.token] - authentication token
*/
constructor(url, auth = null) {
super(url, auth);
/** @type {Object} */
this.itemClass = PluginStar;
}
/**
* Fetch a list of plugins from the REST API.
*
* @param {Object} [searchParams=null] - search parameters object which is
* resource-specific, the ``PluginList.getSearchParameters`` method
* can be used to get a list of possible search parameters
* @param {number} [searchParams.limit] - page limit
* @param {number} [searchParams.offset] - page offset
* @param {number} [timeout=30000] - request timeout
*
* @return {Object} - JS Promise, resolves to a ``PluginList`` object
*/
getPlugins(searchParams = null, timeout = 30000) {
const linkRelation = 'plugins';
const resourceClass = PluginList;
return this._getResource(linkRelation, resourceClass, searchParams, timeout);
}
/**
* Make a POST request to this plugin star list resource to create a new
* plugin star item resource through the REST API.
*
* @param {Object} data - request JSON data object
* @param {string} data.plugin_name - plugin name
* @param {number} [timeout=30000] - request timeout
*
* @return {Object} - JS Promise, resolves to ``this`` object
*/
post(data, timeout = 30000) {
return this._post(data, null, timeout);
}
}