Skip to content

Commit 2c7cb95

Browse files
committed
- implement applicationMetadata object
- remove X- prefix from custom headers
1 parent 0a24e98 commit 2c7cb95

File tree

3 files changed

+21
-45
lines changed

3 files changed

+21
-45
lines changed

flagsmith-core.ts

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,7 @@ type Config = {
5656
fetch?: LikeFetch,
5757
AsyncStorage?: AsyncStorageType,
5858
eventSource?: any,
59-
appName?: IInitConfig['appName'],
60-
appVersion?: IInitConfig['appVersion']
59+
applicationMetadata?: IInitConfig['applicationMetadata'],
6160
};
6261

6362
const FLAGSMITH_CONFIG_ANALYTICS_KEY = "flagsmith_value_";
@@ -70,8 +69,7 @@ const Flagsmith = class {
7069
timestamp: number|null = null
7170
isLoading = false
7271
eventSource:EventSource|null = null
73-
appName: IInitConfig['appName'];
74-
appVersion: IInitConfig['appVersion'];
72+
applicationMetadata: IInitConfig['applicationMetadata'];
7573
constructor(props: Config) {
7674
if (props.fetch) {
7775
_fetch = props.fetch as LikeFetch;
@@ -80,8 +78,7 @@ const Flagsmith = class {
8078
}
8179

8280
this.canUseStorage = typeof window !== 'undefined' || !!props.browserlessStorage;
83-
this.appName = props.appName;
84-
this.appVersion = props.appVersion;
81+
this.applicationMetadata = props.applicationMetadata;
8582

8683
this.log("Constructing flagsmith instance " + props)
8784
if (props.eventSource) {
@@ -316,8 +313,7 @@ const Flagsmith = class {
316313
angularHttpClient,
317314
_trigger,
318315
_triggerLoadingState,
319-
appName,
320-
appVersion,
316+
applicationMetadata,
321317
} = config;
322318
evaluationContext.environment = environmentID ? {apiKey: environmentID} : evaluationContext.environment;
323319
if (!evaluationContext.environment || !evaluationContext.environment.apiKey) {
@@ -364,8 +360,7 @@ const Flagsmith = class {
364360
this.ticks = 10000;
365361
this.timer = this.enableLogs ? new Date().valueOf() : null;
366362
this.cacheFlags = typeof AsyncStorage !== 'undefined' && !!cacheFlags;
367-
this.appName = appName;
368-
this.appVersion = appVersion;
363+
this.applicationMetadata = applicationMetadata;
369364

370365
FlagsmithEvent = DEFAULT_FLAGSMITH_EVENT + "_" + evaluationContext.environment.apiKey;
371366

@@ -804,12 +799,12 @@ const Flagsmith = class {
804799
options.headers['Content-Type'] = 'application/json; charset=utf-8';
805800

806801

807-
if (this.appName) {
808-
options.headers['X-Customer-Application-Name'] = this.appName;
802+
if (this.applicationMetadata?.name) {
803+
options.headers['Flagsmith-Application-Name'] = this.applicationMetadata.name;
809804
}
810805

811-
if (this.appVersion) {
812-
options.headers['X-Customer-Application-Version'] = this.appVersion;
806+
if (this.applicationMetadata?.version) {
807+
options.headers['Flagsmith-Application-Version'] = this.applicationMetadata.version;
813808
}
814809

815810
if (headers) {

test/init.test.ts

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -286,29 +286,8 @@ describe('Flagsmith.init', () => {
286286
expect.any(String),
287287
expect.objectContaining({
288288
headers: expect.objectContaining({
289-
'X-Customer-Application-Name': 'Test App',
290-
'X-Customer-Application-Version': '1.2.3',
291-
}),
292-
}),
293-
);
294-
295-
});
296-
test('should send app name and version headers when provided', async () => {
297-
const onChange = jest.fn();
298-
const { flagsmith, initConfig, AsyncStorage, mockFetch } = getFlagsmith({
299-
onChange,
300-
appName: 'Test App',
301-
appVersion: '1.2.3',
302-
});
303-
304-
await flagsmith.init(initConfig);
305-
expect(mockFetch).toHaveBeenCalledTimes(1);
306-
expect(mockFetch).toHaveBeenCalledWith(
307-
expect.any(String),
308-
expect.objectContaining({
309-
headers: expect.objectContaining({
310-
'X-Customer-Application-Name': 'Test App',
311-
'X-Customer-Application-Version': '1.2.3',
289+
'Flagsmith-Application-Name': 'Test App',
290+
'Flagsmith-Application-Version': '1.2.3',
312291
}),
313292
}),
314293
);
@@ -326,8 +305,8 @@ describe('Flagsmith.init', () => {
326305
expect.any(String),
327306
expect.objectContaining({
328307
headers: expect.not.objectContaining({
329-
'X-Customer-Application-Name': 'Test App',
330-
'X-Customer-Application-Version': '1.2.3',
308+
'Flagsmith-Application-Name': 'Test App',
309+
'Flagsmith-Application-Version': '1.2.3',
331310
}),
332311
}),
333312
);

types.d.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,12 @@ export declare type LoadingState = {
8989
}
9090

9191
export type OnChange<F extends string = string> = (previousFlags: IFlags<F> | null, params: IRetrieveInfo, loadingState:LoadingState) => void
92+
93+
export type ApplicationMetadata = {
94+
name: string;
95+
version: string;
96+
}
97+
9298
export interface IInitConfig<F extends string = string, T extends string = string> {
9399
AsyncStorage?: any;
94100
api?: string;
@@ -115,13 +121,9 @@ export interface IInitConfig<F extends string = string, T extends string = strin
115121
_trigger?: () => void;
116122
_triggerLoadingState?: () => void;
117123
/**
118-
* Customer application name
119-
*/
120-
appName?: string;
121-
/**
122-
* Customer application version
124+
* Customer application metadata
123125
*/
124-
appVersion?: string;
126+
applicationMetadata?: ApplicationMetadata;
125127
}
126128

127129
export interface IFlagsmithResponse {

0 commit comments

Comments
 (0)