import {HomeDBManager} from 'app/gen-server/lib/homedb/HomeDBManager';
import {appSettings} from 'app/server/lib/AppSettings';
import {GristAuditLogger} from 'app/server/lib/GristAuditLogger';

export function configureGristAuditLogger(db: HomeDBManager) {
  const options = checkGristAuditLogger();
  if (!options) { return undefined; }

  return new GristAuditLogger(db, options);
}

export function checkGristAuditLogger() {
  const settings = appSettings.section('auditLogger').section('http');
  const endpoint = settings.flag('endpoint').readString({
    envVar: 'GRIST_AUDIT_HTTP_ENDPOINT',
  });
  if (!endpoint) { return undefined; }

  const payloadFormat = settings.flag('payloadFormat').readString({
    envVar: 'GRIST_AUDIT_HTTP_PAYLOAD_FORMAT',
    defaultValue: 'grist',
  });
  if (payloadFormat !== 'grist') { return undefined; }

  const authorizationHeader = settings.flag('authorizationHeader').readString({
    envVar: 'GRIST_AUDIT_HTTP_AUTHORIZATION_HEADER',
    censor: true,
  });

  return {endpoint, authorizationHeader};
}