From ac143d1fe1f2a5a208310471b3e8e383009c1b67 Mon Sep 17 00:00:00 2001 From: Greg Huels Date: Wed, 5 Mar 2025 09:52:42 -0600 Subject: [PATCH 1/2] fix: key validation should be serverd from https://eppo.cloud --- src/api-endpoints.ts | 5 ----- src/client/eppo-client.ts | 3 +-- src/override-validator.ts | 14 +++++--------- 3 files changed, 6 insertions(+), 16 deletions(-) diff --git a/src/api-endpoints.ts b/src/api-endpoints.ts index f00eb29..6d45c0c 100644 --- a/src/api-endpoints.ts +++ b/src/api-endpoints.ts @@ -3,7 +3,6 @@ import { UFC_ENDPOINT, BANDIT_ENDPOINT, PRECOMPUTED_FLAGS_ENDPOINT, - FLAG_OVERRIDES_KEY_VALIDATION_URL, } from './constants'; import { IQueryParams, IQueryParamsWithSubject } from './http-client'; @@ -37,8 +36,4 @@ export default class ApiEndpoints { precomputedFlagsEndpoint(): URL { return this.endpoint(PRECOMPUTED_FLAGS_ENDPOINT); } - - flagOverridesKeyValidationEndpoint(): URL { - return this.endpoint(FLAG_OVERRIDES_KEY_VALIDATION_URL); - } } diff --git a/src/client/eppo-client.ts b/src/client/eppo-client.ts index 60292b5..d076a5d 100644 --- a/src/client/eppo-client.ts +++ b/src/client/eppo-client.ts @@ -213,8 +213,7 @@ export default class EppoClient { return undefined; } const payload: OverridePayload = this.overrideValidator.parseOverridePayload(overridePayload); - const baseUrl = this.configurationRequestParameters?.baseUrl; - await this.overrideValidator.validateKey(payload.browserExtensionKey, baseUrl); + await this.overrideValidator.validateKey(payload.browserExtensionKey); return payload.overrides; } diff --git a/src/override-validator.ts b/src/override-validator.ts index 77ceec5..c2a5986 100644 --- a/src/override-validator.ts +++ b/src/override-validator.ts @@ -1,20 +1,17 @@ -import ApiEndpoints from './api-endpoints'; import { TLRUCache } from './cache/tlru-cache'; import { Variation } from './interfaces'; import { FlagKey } from './types'; const FIVE_MINUTES_IN_MS = 5 * 3600 * 1000; +const KEY_VALIDATION_URL = 'https://eppo.cloud/api/flag-overrides/v1/validate-key'; export interface OverridePayload { browserExtensionKey: string; overrides: Record; } -export const sendValidationRequest = async ( - browserExtensionKey: string, - validationEndpoint: string, -) => { - const response = await fetch(validationEndpoint, { +export const sendValidationRequest = async (browserExtensionKey: string) => { + const response = await fetch(KEY_VALIDATION_URL, { method: 'POST', body: JSON.stringify({ key: browserExtensionKey, @@ -66,12 +63,11 @@ export class OverrideValidator { } } - async validateKey(browserExtensionKey: string, baseUrl: string | undefined) { + async validateKey(browserExtensionKey: string) { if (this.validKeyCache.get(browserExtensionKey) === 'true') { return true; } - const endpoint = new ApiEndpoints({ baseUrl }).flagOverridesKeyValidationEndpoint().toString(); - await sendValidationRequest(browserExtensionKey, endpoint); + await sendValidationRequest(browserExtensionKey); this.validKeyCache.set(browserExtensionKey, 'true'); } } From 8d765676da97504f686a5fbf83b9ffcfabbb40b8 Mon Sep 17 00:00:00 2001 From: Greg Huels Date: Thu, 6 Mar 2025 04:03:15 -0600 Subject: [PATCH 2/2] CR changes --- src/constants.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/constants.ts b/src/constants.ts index 22f165e..f7c3b30 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -9,7 +9,6 @@ export const DEFAULT_POLL_CONFIG_REQUEST_RETRIES = 7; export const BASE_URL = 'https://fscdn.eppo.cloud/api'; export const UFC_ENDPOINT = '/flag-config/v1/config'; export const BANDIT_ENDPOINT = '/flag-config/v1/bandits'; -export const FLAG_OVERRIDES_KEY_VALIDATION_URL = '/flag-overrides/v1/validate-key'; export const PRECOMPUTED_BASE_URL = 'https://fs-edge-assignment.eppo.cloud'; export const PRECOMPUTED_FLAGS_ENDPOINT = '/assignments'; export const SESSION_ASSIGNMENT_CONFIG_LOADED = 'eppo-session-assignment-config-loaded';