import { default as Axios, AxiosInstance } from 'axios'; import { logService } from '@jdbernard/logging'; import { EventProposalConfig, eventProposalConfigFromDTO, EventProposalModel, eventProposalModelToDTO, } from './event-proposal.models'; export * from './event-proposal.models'; const logger = logService.getLogger('client-api'); export class HffEntryFormsApiClient { private http: AxiosInstance; private cachedEventProposalConfig: EventProposalConfig | null = null; constructor(apiBase: string) { this.http = Axios.create({ baseURL: apiBase }); logger.trace('Initialized HffEntryFormsApiClient'); } public async version(): Promise { const resp = await this.http.get('version'); return resp.data as string; } public async getEventProposalConfig(): Promise { if (!this.cachedEventProposalConfig) { logger.trace('GET /event-proposals/config'); const resp = await this.http.get('/event-proposals/config'); this.cachedEventProposalConfig = eventProposalConfigFromDTO( (resp.data as any).data ); } return this.cachedEventProposalConfig; } public async proposeEvent(ep: EventProposalModel): Promise { logger.trace('POST /event-proposals'); const resp = await this.http.post( '/event-proposals', eventProposalModelToDTO(ep) ); return resp.status < 300; } } export default new HffEntryFormsApiClient(process.env.VUE_APP_API_BASE_URL);