'use strict' const fetch = require('node-fetch') const xml2js = require('xml2js').parseString const _ = require('lodash') const key = 'jRzwDtxiBV3vt6OQfQ' module.exports = { search () { return fetch(`https://www.goodreads.com/search.xml?key=${key}&q=Ender%27s+Game`) .then((res) => res.text()) .then((text) => { return new Promise((resolve, reject) => { xml2js(text, (err, json) => { if (err) { return reject(err) } // because of xml > json we get a weird data structure. fix let results = json.GoodreadsResponse.search[0].results[0].work // more fixing of the data structure results = results.map((result) => _.mapValues(result, (value, key) => value[0])) resolve(results) }) }) }) .catch((err) => console.error(err)) }, }