/** * API Response Handling * This utility is responsible for handling API responses. * @author [Vivek Sudarsan] * @version 1.0.0 */ /** * Default API response handling * @param response * @returns */ export const handleJsonResponse = async (response: any) => { if (typeof response === 'object') { return response; } else if (response === null || response === undefined) { return null; } try { return response.json(); } catch (e) { console.log(response); return null; } }; /** * Deconstruct API Response * @param response * @returns */ export const formatJsonResponse = async (response: { data: any; included: any; }) => { if (response.data) { const output: any = { attributes: {}, relationships: {}, }; const data = Array.isArray(response.data) ? response.data : [response.data]; const included = response.included; const components = [data, included]; components.forEach((component: any) => { if (component) { component.forEach((item: any) => { item.attributes['id'] = item.id; if (output.attributes.hasOwnProperty(item.type)) { output.attributes[item.type].push(item.attributes); } else { output.attributes[item.type] = [item.attributes]; } }); } }); return output; } return response; };