-
Notifications
You must be signed in to change notification settings - Fork 86
Expand file tree
/
Copy pathodp_config.ts
More file actions
106 lines (94 loc) · 2.94 KB
/
odp_config.ts
File metadata and controls
106 lines (94 loc) · 2.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/**
* Copyright 2022-2023, Optimizely
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { checkArrayEquality } from '../../../lib/utils/fns';
export class OdpConfig {
/**
* Host of ODP audience segments API.
* @private
*/
private _apiHost = '';
/**
* Getter to retrieve the ODP server host
* @public
*/
public get apiHost(): string {
return this._apiHost;
}
/**
* Public API key for the ODP account from which the audience segments will be fetched (optional).
* @private
*/
private _apiKey = '';
/**
* Getter to retrieve the ODP API key
* @public
*/
public get apiKey(): string {
return this._apiKey;
}
/**
* All ODP segments used in the current datafile (associated with apiHost/apiKey).
* @private
*/
private _segmentsToCheck: string[];
/**
* Getter for ODP segments to check
* @public
*/
public get segmentsToCheck(): string[] {
return this._segmentsToCheck;
}
constructor(apiKey?: string, apiHost?: string, segmentsToCheck?: string[]) {
if (apiKey) this._apiKey = apiKey;
if (apiHost) this._apiHost = apiHost;
this._segmentsToCheck = segmentsToCheck ?? [];
}
/**
* Update the ODP configuration details
* @param apiKey Public API key for the ODP account
* @param apiHost Host of ODP audience segments API
* @param segmentsToCheck Audience segments
* @returns true if configuration was updated successfully
*/
public update(apiKey?: string, apiHost?: string, segmentsToCheck?: string[]): boolean {
if (this._apiKey === apiKey && this._apiHost === apiHost && this._segmentsToCheck === segmentsToCheck) {
return false;
} else {
if (apiKey) this._apiKey = apiKey;
if (apiHost) this._apiHost = apiHost;
if (segmentsToCheck) this._segmentsToCheck = segmentsToCheck;
return true;
}
}
/**
* Determines if ODP configuration has the minimum amount of information
*/
public isReady(): boolean {
return !!this._apiKey && !!this._apiHost;
}
/**
* Detects if there are any changes between the current and incoming ODP Configs
* @param config ODP Configuration
* @returns Boolean based on if the current ODP Config is equivalent to the incoming ODP Config
*/
public equals(config: OdpConfig): boolean {
return (
this._apiHost == config._apiHost &&
this._apiKey == config._apiKey &&
checkArrayEquality(this.segmentsToCheck, config._segmentsToCheck)
);
}
}