UNPKG

rest-api-handler

Version:
55 lines (43 loc) 1.26 kB
'use strict'; /** * Processor provider that process response from API and throw custom Exception. */ class DefaultResponseProcessor { /** * Constructor. * * @param Exception - Exception class that will be throwed if request fails. * @param decoder - Define custom response body decoder. */ constructor(Exception, decoder) { this.Exception = Exception; this.decoder = decoder || DefaultResponseProcessor.decodeResponse; } async processResponse(response, request) { const decodedResponse = await this.decoder(response); const toRespond = { data: decodedResponse, status: response.status, source: response, request }; if (!response.ok) { throw new this.Exception(toRespond, request); } return toRespond; } static decodeResponse(response) { const contentType = response.headers.get('content-type'); // on default decode response as text if (!contentType) { return response.text(); } if (contentType.includes('json')) { return response.json(); } if (contentType.includes('text') || contentType.includes('xml')) { return response.text(); } return response.blob(); } } module.exports = DefaultResponseProcessor;