import {
  ConnectError,
  mapConnectErrorToHttpStatus
} from '@mochabug/adapt-sdk/api';
import {
  ExternalConfiguratorRouter,
  InternalConfiguratorRouter
} from '@mochabug/adapt-sdk/router';

export default {
  external: new ExternalConfiguratorRouter()
    .useRequestLogging()
    .useBearerAuthorization(['/api'])
    .useErrorHandling(async (e) => {
      console.error(e);
      if (e instanceof ConnectError) {
        return new Response(null, { status: mapConnectErrorToHttpStatus(e) });
      }
      return new Response(null, {
        status: 500,
        statusText: 'Internal server error'
      });
    })
    .add('GET', '/api/config', async (_req, api) => {
      const { metadata } = await api.getConfig('metadata');
      return new Response(JSON.stringify(metadata), {
        headers: {
          'Content-Type': 'application/json'
        }
      });
    })
    .add('GET', '{/*any}', async (_, api) => {
      const res = await api.readFile(
        'browser/___VERTEX_NAME___/configurator.html'
      );
      return new Response(res.content, {
        headers: { 'Content-Type': 'text/html; charset=utf-8' }
      });
    }),
  internal: new InternalConfiguratorRouter()
};
