export class Utilities { static getI18nKeyForApp(key, appId) { return key && `apps-${appId}-${key}`; } static curl({ method, params, auth, headers = {}, url, query, content }, opts = {}) { const newLine = '\\\n '; const cmd = ['curl']; // curl options if (opts.verbose) { cmd.push('-v'); } if (opts.headers) { cmd.push('-i'); } // method cmd.push('-X'); cmd.push((method || 'GET').toUpperCase()); // URL let u = url; if (typeof params === 'object') { Object.entries(params).forEach(([key, value]) => { u = u.replace(`:${key}`, value); }); } if (typeof query === 'object') { const queryString = Object.entries(query) .map(([key, value]) => `${key}=${value}`) .join('&'); u += `?${queryString}`; } cmd.push(u); // username if (auth) { cmd.push(newLine); cmd.push('-u'); cmd.push(auth); } // headers const headerKeys = []; Object.entries(headers).forEach(([key, val]) => { key = key.toLowerCase(); headerKeys.push(key); cmd.push(newLine); cmd.push('-H'); cmd.push(`"${key}${val ? ': ' : ';'}${val || ''}"`); }); if (content) { if (typeof content === 'object') { if (!headerKeys.includes('content-type')) { cmd.push(newLine); cmd.push('-H'); cmd.push('"content-type: application/json"'); } content = JSON.stringify(content); } cmd.push(newLine); cmd.push('--data-binary'); cmd.push(`'${content}'`); } return cmd.join(' '); } }