deem/server/api/goodreads.js
2018-03-07 20:20:20 +01:00

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))
},
}