| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | const fs     = require('fs');const FormData = require('form-data');const logger = require('./logger');const Client = require('./client');module.exports = function (config) {	logger('Client Ready using', config.baseUrl);	return {		/**		 * @param   {object}    options		 * @param   {string}    options.path         API path		 * @param   {string}    [options.token]      JWT		 * @param   {bool}      [options.returnOnError] If true, will return instead of throwing errors		 * @returns {string}		 */		backendApiGet: (options) => {			const api = new Client(config);			api.setToken(options.token);			return api.request('get', options.path, options.returnOnError || false);		},		/**		 * @param   {object}    options		 * @param   {string}    options.token        JWT		 * @param   {string}    options.path         API path		 * @param   {object}    options.data		 * @param   {bool}      [options.returnOnError] If true, will return instead of throwing errors		 * @returns {string}		 */		backendApiPost: (options) => {			const api = new Client(config);			api.setToken(options.token);			return api.request('post', options.path, options.returnOnError || false, options.data);		},		/**		 * @param   {object}    options		 * @param   {string}    options.token        JWT		 * @param   {string}    options.path         API path		 * @param   {object}    options.files		 * @param   {bool}      [options.returnOnError] If true, will return instead of throwing errors		 * @returns {string}		 */		backendApiPostFiles: (options) => {			const api = new Client(config);			api.setToken(options.token);			const form = new FormData();			for (let [key, value] of Object.entries(options.files)) {				form.append(key, fs.createReadStream(config.fixturesFolder + '/' + value));			}			return api.postForm(options.path, form, options.returnOnError || false);		},		/**		 * @param   {object}    options		 * @param   {string}    options.token        JWT		 * @param   {string}    options.path         API path		 * @param   {object}    options.data		 * @param   {bool}      [options.returnOnError] If true, will return instead of throwing errors		 * @returns {string}		 */		backendApiPut: (options) => {			const api = new Client(config);			api.setToken(options.token);			return api.request('put', options.path, options.returnOnError || false, options.data);		},		/**		 * @param   {object}    options		 * @param   {string}    options.token        JWT		 * @param   {string}    options.path         API path		 * @param   {bool}      [options.returnOnError] If true, will return instead of throwing errors		 * @returns {string}		 */		backendApiDelete: (options) => {			const api = new Client(config);			api.setToken(options.token);			return api.request('delete', options.path, options.returnOnError || false);		}	};};
 |