import { ISettings } from '../../types';

const telemetryEndpointMatcher = /^\/v1\/metrics\/(config|usage)/;
const eventsEndpointMatcher = /^\/(testImpressions|metrics|events)/;
const authEndpointMatcher = /^\/v2\/auth/;
const streamingEndpointMatcher = /^\/(sse|event-stream)/;

/**
 * Get URL based on a given target (path).
 * ATM, it is only used for testing purposes.
 *
 * @param settings - settings object
 * @param target - url path
 * @returns complete url
 */
export function url(settings: ISettings, target: string) {
  if (telemetryEndpointMatcher.test(target)) {
    return `${settings.urls.telemetry}${target}`;
  }
  if (eventsEndpointMatcher.test(target)) {
    return `${settings.urls.events}${target}`;
  }
  if (authEndpointMatcher.test(target)) {
    return `${settings.urls.auth}${target}`;
  }
  if (streamingEndpointMatcher.test(target)) {
    return `${settings.urls.streaming}${target}`;
  }
  return `${settings.urls.sdk}${target}`;
}
