UNPKG

gatsby-source-nytimes-books-api

Version:

This [GatsyJS](https://gatsbyjs.org) source plugin fetches data from the [NYTimes Books API](https://developer.nytimes.com/docs/books-product/1/overview)

38 lines (31 loc) 1.05 kB
const axios = require("axios") const getResults = require("./getResults") const getQueryString = require("./getQueryString") const { NYTIMES_API, PLUGIN_NAME } = require("../constants") function getReviews(options, reporter) { const { token, ...params } = options const queryObj = { "api-key": token } const acceptedParams = ["isbn", "author", "title"] let apiUrl = `${NYTIMES_API}/reviews.json` const paramKeys = Object.keys(params) if (!paramKeys.length) { return new Promise(function(_, reject) { reporter.warn( `${PLUGIN_NAME}: reviews endpoint requires at least one query parameter value` ) return reject() }) } paramKeys.forEach(key => { const value = params[key] if (value) { queryObj[key] = params[key] } }) const query = getQueryString(params, acceptedParams, queryObj) apiUrl = `${apiUrl}?${query}` return axios(apiUrl) .then(data => getResults(data)) .catch(err => reporter.error(`Could not get book reviews: ${err}`)) } module.exports = getReviews