import axios from 'axios'; import { writeFileSync } from 'fs'; import { resolve } from 'path'; class DataFetchHelper { dataToFetch = [{ url: 'api/lookup/currencies', fileName: 'currencies' }, { url: 'api/currency/currencyFormatting', fileName: 'currency-formatting' }, { url: 'api/lookup/countries', fileName: 'countries' }, { url: 'api/lookup/paymentstatus', fileName: 'payment-statuses' }, { url: 'api/lookup/applicationstatus', fileName: 'application-statuses' }, { url: 'api/charity/GetAllClassificationsFlatList?classificationTypeId=1', fileName: 'classifications' }, { url: 'api/lookup/timezones', fileName: 'time-zones' }, { url: 'api/lookup/archivereasoncodes', fileName: 'archive-reason-codes' }, { url: 'api/lookup/GetAllSdgInfo', fileName: 'sdgs' }, { url: 'api/lookup/languages', fileName: 'languages' }]; async fetchHelperData () { console.log('Calling endpoints on', this.determineAPIBase()); await Promise.all(this.dataToFetch.map(async (item) => { console.log('start fetching', item.fileName); try { await this.getHelperDataAndWriteToFile( item.url, item.fileName ); } catch (e) { console.log('Endpoint fail', item); } })); } determineAPIBase () { const pipelineBranch = process.env.BUILD_SOURCEBRANCHNAME?.split('/').pop(); switch (pipelineBranch) { case 'master': return 'api-secure.yourcausegrants.com'; case 'stage': return 'api-secure.yourcausegrantsuat.com'; default: return process.env.GC_API_BASE || 'api-secure.yourcausegrantsqa.com'; } } buildFullUrl (url: string) { const apiBase = this.determineAPIBase(); return `https://${apiBase}/${url}`; } getLocation (fileName: string) { const cwd = process.cwd(); return resolve(cwd, `ClientApp/app/core/static-assets/${fileName}.ts`); } async getHelperDataAndWriteToFile ( endpoint: string, fileName: string ) { const url = this.buildFullUrl(endpoint); const response = await axios.get(url); const location = this.getLocation(fileName); writeFileSync(location, 'export default ' + JSON.stringify(response.data, null, ' ')); } } (async () => { console.log('start fetch helper data'); await new DataFetchHelper().fetchHelperData(); console.log('finish fetch helper data'); })();