import axios from 'axios' const isDev = process.env.NODE_ENV !== 'production' && false axios.defaults.baseURL = `${isDev ? 'http://localhost' : 'https://api.nicco.io'}/wp-json/wp/v2` function normalize(post) { return { ...post, ...post.acf, id: post.id, title: post.title.rendered, content: post.content.rendered, } } function combineUrlAndParams(url, params) { const p = new URLSearchParams({ per_page: 100, ...params, }).toString() return `${url}?${p}` } export async function getOne(url, params = {}) { const { data } = await axios(combineUrlAndParams(url, params)) if (!data.length) return null else return normalize(data[0]) } export async function getAll(url, params = {}) { const { data, headers } = await axios(combineUrlAndParams(url, params)) const totalPages = parseInt(headers['x-wp-totalpages']) const results = [...data] if (totalPages > 1) { for (let page = 2; page <= totalPages; page++) { const { data } = await axios(combineUrlAndParams(url, { ...params, page })) results.push(...data) } } return results.map(normalize) } export function sortByDate(data) { return data.sort((a, b) => parseInt(b.date) - parseInt(a.date)) } export function respond(res, body) { res.setHeader('Content-Type', 'application/json') res.end(JSON.stringify(body)) }