diff --git a/src/services/__tests__/splitApi.spec.ts b/src/services/__tests__/splitApi.spec.ts index 07d6dec4..d5550f93 100644 --- a/src/services/__tests__/splitApi.spec.ts +++ b/src/services/__tests__/splitApi.spec.ts @@ -60,7 +60,12 @@ describe('splitApi', () => { splitApi.postMetricsUsage('fake-body'); assertHeaders(settings, fetchMock.mock.calls[8][1].headers); - expect(telemetryTrackerMock.trackHttp).toBeCalledTimes(9); + splitApi.fetchMyLargeSegments('userKey'); + [url, { headers }] = fetchMock.mock.calls[9]; + assertHeaders(settings, headers); + expect(url).toBe('sdk/myLargeSegments/userKey'); + + expect(telemetryTrackerMock.trackHttp).toBeCalledTimes(10); telemetryTrackerMock.trackHttp.mockClear(); fetchMock.mockClear(); diff --git a/src/services/splitApi.ts b/src/services/splitApi.ts index 9e2223ea..51f1a02a 100644 --- a/src/services/splitApi.ts +++ b/src/services/splitApi.ts @@ -4,7 +4,7 @@ import { splitHttpClientFactory } from './splitHttpClient'; import { ISplitApi } from './types'; import { objectAssign } from '../utils/lang/objectAssign'; import { ITelemetryTracker } from '../trackers/types'; -import { SPLITS, IMPRESSIONS, IMPRESSIONS_COUNT, EVENTS, TELEMETRY, TOKEN, SEGMENT, MY_SEGMENT } from '../utils/constants'; +import { SPLITS, IMPRESSIONS, IMPRESSIONS_COUNT, EVENTS, TELEMETRY, TOKEN, SEGMENT, MY_SEGMENT, MY_LARGE_SEGMENT } from '../utils/constants'; import { ERROR_TOO_MANY_SETS } from '../logger/constants'; const noCacheHeaderOptions = { headers: { 'Cache-Control': 'no-cache' } }; @@ -78,6 +78,11 @@ export function splitApiFactory( return splitHttpClient(url, noCache ? noCacheHeaderOptions : undefined, telemetryTracker.trackHttp(MY_SEGMENT)); }, + fetchMyLargeSegments(userMatchingKey: string, noCache?: boolean) { + const url = `${urls.sdk}/myLargeSegments/${encodeURIComponent(userMatchingKey)}`; + return splitHttpClient(url, noCache ? noCacheHeaderOptions : undefined, telemetryTracker.trackHttp(MY_LARGE_SEGMENT)); + }, + /** * Post events. * diff --git a/src/services/types.ts b/src/services/types.ts index 116ccec5..a5dfde2a 100644 --- a/src/services/types.ts +++ b/src/services/types.ts @@ -62,6 +62,7 @@ export interface ISplitApi { fetchSplitChanges: IFetchSplitChanges fetchSegmentChanges: IFetchSegmentChanges fetchMySegments: IFetchMySegments + fetchMyLargeSegments: IFetchMySegments postEventsBulk: IPostEventsBulk postUniqueKeysBulkCs: IPostUniqueKeysBulkCs postUniqueKeysBulkSs: IPostUniqueKeysBulkSs diff --git a/src/sync/submitters/types.ts b/src/sync/submitters/types.ts index 440f466a..210cf603 100644 --- a/src/sync/submitters/types.ts +++ b/src/sync/submitters/types.ts @@ -113,7 +113,8 @@ export type TELEMETRY = 'te'; export type TOKEN = 'to'; export type SEGMENT = 'se'; export type MY_SEGMENT = 'ms'; -export type OperationType = SPLITS | IMPRESSIONS | IMPRESSIONS_COUNT | EVENTS | TELEMETRY | TOKEN | SEGMENT | MY_SEGMENT; +export type MY_LARGE_SEGMENT = 'mls'; +export type OperationType = SPLITS | IMPRESSIONS | IMPRESSIONS_COUNT | EVENTS | TELEMETRY | TOKEN | SEGMENT | MY_SEGMENT | MY_LARGE_SEGMENT; export type LastSync = Partial> export type HttpErrors = Partial> diff --git a/src/utils/constants/index.ts b/src/utils/constants/index.ts index 51decc18..41a14e0a 100644 --- a/src/utils/constants/index.ts +++ b/src/utils/constants/index.ts @@ -76,6 +76,7 @@ export const TELEMETRY = 'te'; export const TOKEN = 'to'; export const SEGMENT = 'se'; export const MY_SEGMENT = 'ms'; +export const MY_LARGE_SEGMENT = 'mls'; export const TREATMENT = 't'; export const TREATMENTS = 'ts';