UNPKG

md-movie-utils

Version:

The ultimate utility to get any information about a movie

79 lines (65 loc) 1.71 kB
let axios = require('axios'); class BaseClient { /** * Initialize a specific client. * @param {string} apiKey client specific api key * @param {string} baseUrl client specific base url */ constructor(apiKey, baseUrl) { if (!apiKey) { throw new Error('API Key not provided.'); } this._apiKey = apiKey; this._httpManager = axios.create({ baseURL: baseUrl }); } get authParam() { throw new Error('Not implemented'); } get httpManager() { return this._httpManager; } get requestKeyMap() { throw new Error('Not implemented'); } /** * Get a movie by looking up using different params (e.g. title, imdb id, year etc.) * @param {object} options */ get(options) { throw new Error('Not implemented'); } /** * Search for a movie. * @param {object} options */ search(options) { throw new Error('Not implemented'); } _makeHTTPGET(url, params, headers, responseTransformer) { let paramsWithAuth = Object.assign({}, params); paramsWithAuth[this.authParam] = this._apiKey; let responseTransformers = [JSON.parse]; if (responseTransformer) { responseTransformers.push(responseTransformer); } return this.httpManager({ method: 'get', url: url, params: paramsWithAuth, headers: headers, transformResponse: responseTransformers }); } _translateIncomingRequestOptions(options) { let translated = {}; Object.keys(options).forEach((key) => { if (options[key] && this.requestKeyMap[key]) { translated[this.requestKeyMap[key]] = options[key]; } }); return translated; } } module.exports = BaseClient;