@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
35 lines (32 loc) • 1.14 kB
text/typescript
import { ISettings } from '../../types';
const telemetryEndpointMatcher = /^\/v1\/(metrics|keys)\/(config|usage|ss|cs)/;
const eventsEndpointMatcher = /^\/(testImpressions|metrics|events)/;
const authEndpointMatcher = /^\/(v2|v3)\/auth/;
const streamingEndpointMatcher = /^\/(sse|event-stream)/;
const configsEndpointMatcher = /^\/v1\/(configs|segmentChanges)/;
/**
* 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}`;
}
if (configsEndpointMatcher.test(target)) {
return `${settings.urls.configs}${target}`;
}
return `${settings.urls.sdk}${target}`;
}