UNPKG

kyc

Version:

This package handles all api connections while receiving data and built DOM about your HTML code template.

91 lines (79 loc) 3.21 kB
import initializeHandler from './initializeHandler.js'; import totalLimitHandler from './totalLimitHandler.js'; import timeDiffHandler from './timeDiffHandler.js' import dataHandler from './dataHandler.js'; import processHandler from './processHandler.js'; import logHandler from './logHandler.js'; import errHandler from './errHandler.js'; /** * This function handles api connections, data receiving, DOM building about your HTML code template like component. * * If next request happens during timeDiff uses data from local storage. * Hence, saves network and request quotas. * * Automatically saves these on the local storage: * * HTTP request * * End-point * * Parsed response. * * @param {string} url - The end point URL for the HTTP request. * @param {Object} [settings] - Any settings from the list. * @param {string} [settings.method] - HTTP request method type (i.e. GET, POST, ...). * @param {Object} [settings.headers] - HTTP request headers. * @param {Object} [settings.body] - HTTP request body. * @param {Object} [settings.options] - HTTP request options. * @param {string} [settings.parser] - Promise-based methods to access the body in various formats(json, text, formData, blob or arrayBuffer ). * @param {boolean} [settings.log] - Log parsed response on console. * @param {string} [settings.key] - Key or key chain (i.e. response.data.informations). * @param {function} [settings.component] - Callback function. Receives array members one by one as parameter. * @param {string} [settings.target] - CSS selector of target element on body for inserting rendered component (i.e. body, #id, .class-name) * @param {string} [settings.timeDiff] - Time difference to expire data on local storage (i.e. 123, 123s, 123m, 123h, 123d, 123w, 123y). * @param {boolean} [settings.sameDay] - Same day control to expire data on local storage. * @param {number} [settings.totalLimit] - Limit total request limit count by kyc from now on. Don't set it to remove the limit. * @param {function} [settings.errorHandler] - Error handler function. * @returns {Array} Returns array of components or success. */ export default async (url, settings) => { let finalData = []; let defaultSettings = { method: 'GET', headers: {}, body: null, options: null, parser: 'json', log: false, key: null, component: null, target: 'return', timeDiff:0, sameDay: false, totalLimit: null, errorHandler: errHandler, }; let { method, headers, body, options, parser, log, key, component, target, timeDiff, sameDay, totalLimit, errorHandler } = initializeHandler(defaultSettings, settings); totalLimitHandler(totalLimit); let finalOpt = {method, headers, ...options} if (body != null) { finalOpt.body = JSON.stringify(body); } finalData = await dataHandler(url, finalOpt, parser, timeDiffHandler(timeDiff), sameDay, errorHandler); logHandler(log, finalData); return await processHandler(finalData, key, target, component); }