1
0
mirror of https://github.com/trambarhq/relaks-wordpress-example.git synced 2025-09-25 06:51:30 +02:00
Files
relaks-wordpress-example/server/json-retriever.js
2019-01-31 02:39:30 +01:00

51 lines
1.4 KiB
JavaScript

const CrossFetch = require('cross-fetch');
const WORDPRESS_HOST = process.env.WORDPRESS_HOST;
async function fetch(path) {
console.log(`Retrieving data: ${path}`);
let url = `${WORDPRESS_HOST}${path}`;
let res = await CrossFetch(url);
let resText = await res.text();
let object;
try {
object = JSON.parse(resText);
} catch (err) {
// remove any error msg that got dumped into the output stream
if (res.status === 200) {
resText = resText.replace(/^[^\{\[]+/, '');
object = JSON.parse(resText);
}
}
if (res.status >= 400) {
let msg = (object && object.message) ? object.message : resText;
let err = new Error(msg);
err.status = res.status;
throw err;
}
let total = parseInt(res.headers.get('X-WP-Total'));
removeSuperfluousProps(path, object);
let text = JSON.stringify(object);
return { path, text, total };
}
function removeSuperfluousProps(path, object) {
if (object instanceof Array) {
let objects = object;
for (let object of objects) {
removeSuperfluousProps(path, object);
}
} else if (object instanceof Object) {
delete object._links;
if (path === '/wp-json/') {
delete object.routes;
} else {
delete object.guid;
}
}
}
module.exports = {
fetch,
};