33 lines
896 B
JavaScript
33 lines
896 B
JavaScript
'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))
|
|
},
|
|
}
|