// Shared API source form view-model builder. function buildDefaultApiSource() { return { id: null, enabled: 1, name: '', apiUrl: '', requestMethod: 'GET', requestBodyJson: '', authMethod: 'none', authUsername: '', authPassword: '', authBearerToken: '', authHeaderName: 'X-API-Key', authHeaderValue: '', tokenUrl: '', tokenRequestBodyJson: '', tokenResponsePath: 'access_token', tokenHeaderName: 'Authorization', tokenHeaderPrefix: 'Bearer', itemsPath: '', updateIntervalValue: 60, updateIntervalUnit: 'minutes', lastPulledAt: null, lastPullError: '', lastResponseStatus: null, lastResponseContentType: '', lastResponseJson: '' }; } function buildApiSourceFormViewModel(apiSource, message, currentUser, options, isEdit) { const viewApiSource = Object.assign(buildDefaultApiSource(), apiSource || {}); const viewOptions = options || {}; return { title: isEdit ? 'Edit API source' : 'Add API source', active: 'api-sources', message: message, currentUser: currentUser || null, apiSource: viewApiSource, inUse: Boolean(viewApiSource.inUse), lastResponseJson: viewOptions.lastResponseJson || viewApiSource.lastResponseJson || '', lastPullError: viewOptions.lastPullError || viewApiSource.lastPullError || '', messageVariant: viewOptions.messageVariant || '', isEdit: Boolean(isEdit), showSaveSecondaryActions: true, deleteDisabled: !isEdit || Boolean(viewApiSource.inUse), formAction: isEdit && viewApiSource.id ? '/data-sources/api-sources/' + viewApiSource.id : '/data-sources/api-sources', formAttrs: isEdit && viewApiSource.id ? 'data-async-save data-async-save-refresh-target="#api-source-response-panel" data-async-save-refresh-state-url="/data-sources/api-sources/' + viewApiSource.id + '/state" data-async-save-close-url="/data-sources/api-sources" data-async-save-new-url="/data-sources/api-sources/new"' : 'data-async-save data-async-save-close-url="/data-sources/api-sources" data-async-save-new-redirect="response-url" data-async-save-new-url="/data-sources/api-sources/new"', cancelUrl: '/data-sources/api-sources', deleteUrl: isEdit && viewApiSource.id ? '/data-sources/api-sources/' + viewApiSource.id + '/delete' : '' }; } module.exports = { buildApiSourceFormViewModel: buildApiSourceFormViewModel };