description and source-codeclass Client {
constructor(apiKey, language) {
if (!apiKey) {
throw new Error('API key is required');
}
this.apiKey = apiKey;
this.language = language || 'en';
// store and manage auth token
let tokenPromise = undefined;
this.getToken = function() {
if (tokenPromise === undefined) {
tokenPromise = logIn(this.apiKey);
}
return tokenPromise;
};
}
/**
* Get available languages useable by TheTVDB API.
*
* ``` javascript
* tvdb.getLanguages()
* .then(response => { handle response })
* .catch(error => { handle error });
* ```
*
* @param {Object} [opts] - additional options for request
* @returns {Promise}
*
* @see https://api.thetvdb.com/swagger#!/Languages/get_languages
* @public
*/
getLanguages(opts) {
return this.sendRequest('languages', opts);
}
/**
* Get episode by episode id.
*
* ``` javascript
* tvdb.getEpisodeById(4768125)
* .then(response => { handle response })
* .catch(error => { handle error });
* ```
*
* @param {Number|String} episodeId
* @param {Object} [opts] - additional options for request
* @returns {Promise}
*
* @see https://api.thetvdb.com/swagger#!/Episodes/get_episodes_id
* @public
*/
getEpisodeById(episodeId, opts) {
return this.sendRequest(`episodes/${episodeId}`, opts);
}
/**
* Get all episodes by series id.
*
* ``` javascript
* tvdb.getEpisodesBySeriesId(153021)
* .then(response => { handle response })
* .catch(error => { handle error });
* ```
*
* @param {Number|String} seriesId
* @param {Object} [opts] - additional options for request
* @returns {Promise}
*
* @see https://api.thetvdb.com/swagger#!/Series/get_series_id_episodes
* @public
*/
getEpisodesBySeriesId(seriesId, opts) {
return this.sendRequest(`series/${seriesId}/episodes`, opts);
}
/**
* Get basic series information by id.
*
* ``` javascript
* tvdb.getSeriesById(73255)
* .then(response => { handle response })
* .catch(error => { handle error });
* ```
*
* @param {Number|String} seriesId
* @param {Object} [opts] - additional options for request
* @returns {Promise}
*
* @see https://api.thetvdb.com/swagger#!/Series/get_series_id
* @public
*/
getSeriesById(seriesId, opts) {
return this.sendRequest(`series/${seriesId}`, opts);
}
/**
* Get series episode by air date.
*
* ``` javascript
* tvdb.getEpisodeByAirDate(153021, '2011-10-03')
* .then(response => { handle response })
* .catch(error => { handle error });
* ```
*
* @param {Number|String} seriesId
* @param {String} airDate
* @param {Object} [opts] - additional options for request
* @returns {Promise}
*
* @see https://api.thetvdb.com/swagger#!/Series/get_series_id_episodes_query
* @public
*/
getEpisodesByAirDate(seriesId, airDate, opts) {
return this.sendRequest(`series/${seriesId}/episodes/query?firstAired=${airDate}`, opts);
}
/**
* Get basic series information by name.
*
* ``` javascript
* tvdb.getSeriesByName('Breaking Bad')
* .then(response => { handle response })
* .catch(error => { handle error });
* ```
*
* @param {String} name
* @param {Object} [opts] - additional options for request
* @returns {Promise}
*
* @see https://api.thetvdb.com/swagger#!/Search/get_search_series
* @public
*/
getSeriesByName(name, opts) {
return this.sendRequest(`search/series?name=${name}`, ...