/** * Classe permettant de construire les options d'une URL */ import TypesTesting from "~/services/utils/typesTesting"; import {ListArgs, UrlArgs} from "~/types/interfaces"; import {QUERY_TYPE} from "~/types/enums"; class UrlOptionsBuilder { /** * Main méthode qui appellera les méthode privées correspondantes (getUrlOptionsImage, getUrlOptionsLists) * @param {UrlArgs} args * @return {string} */ public static build(args: UrlArgs): Array { let options: Array = [] if (args.type === QUERY_TYPE.IMAGE){ options = [...options, this.getUrlOptionsImage()] } if (TypesTesting.isDataProviderArgs(args) && args.listArgs !== undefined) { options = [...options, ...this.getUrlOptionsLists(args.listArgs)] } return options } /** * Une image doit toujours avoir le time en options pour éviter les problème de cache * @private */ private static getUrlOptionsImage(): string { return new Date().getTime().toString() } /** * Fonction renvoyant le tableau d'options d'une list * @param listArgs * @private */ private static getUrlOptionsLists(listArgs: ListArgs): Array { const options: Array = [] if (listArgs.itemsPerPage) { options.push(`itemsPerPage=${listArgs.itemsPerPage}`) } if (listArgs.page) { options.push(`page=${listArgs.page}`) } if (listArgs.filters) { for(const filter of listArgs.filters){ options.push(`${filter.key}=${filter.value}`) } } return options } } export default UrlOptionsBuilder