Skip to content

Commit a2d6157

Browse files
Todd AndersonTodd Anderson
authored andcommitted
addressing review comments
1 parent 5029d16 commit a2d6157

File tree

1 file changed

+75
-75
lines changed

1 file changed

+75
-75
lines changed

packages/shared/sdk-server/src/data_sources/PollingProcessorFDv2.ts

Lines changed: 75 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,78 @@ import Requestor from './Requestor';
1616

1717
export type PollingErrorHandler = (err: LDPollingError) => void;
1818

19+
function selectorAsQueryParams(selector: string | undefined): { key: string; value: string }[] {
20+
if (!selector) {
21+
return [];
22+
}
23+
24+
return [
25+
{
26+
key: 'basis',
27+
value: selector,
28+
},
29+
];
30+
}
31+
32+
// helper function to transform FDv1 response data into events the PayloadProcessor can parse
33+
function processFDv1FlagsAndSegments(
34+
payloadProcessor: internal.PayloadProcessor,
35+
data: FlagsAndSegments,
36+
) {
37+
payloadProcessor.processEvents([
38+
{
39+
event: `server-intent`,
40+
data: {
41+
payloads: [
42+
{
43+
id: `FDv1Fallback`,
44+
target: 1,
45+
intentCode: `xfer-full`,
46+
},
47+
],
48+
},
49+
},
50+
]);
51+
52+
Object.entries(data?.flags || []).forEach(([key, flag]) => {
53+
payloadProcessor.processEvents([
54+
{
55+
event: `put-object`,
56+
data: {
57+
kind: 'flag',
58+
key,
59+
version: flag.version,
60+
object: flag,
61+
},
62+
},
63+
]);
64+
});
65+
66+
Object.entries(data?.segments || []).forEach(([key, segment]) => {
67+
payloadProcessor.processEvents([
68+
{
69+
event: `put-object`,
70+
data: {
71+
kind: 'segment',
72+
key,
73+
version: segment.version,
74+
object: segment,
75+
},
76+
},
77+
]);
78+
});
79+
80+
payloadProcessor.processEvents([
81+
{
82+
event: `payload-transferred`,
83+
data: {
84+
state: `FDv1Fallback`,
85+
version: 1,
86+
},
87+
},
88+
]);
89+
}
90+
1991
/**
2092
* @internal
2193
*/
@@ -26,7 +98,7 @@ export default class PollingProcessorFDv2 implements subsystemCommon.DataSource
2698
private _statusCallback?: (status: subsystemCommon.DataSourceState, err?: any) => void;
2799

28100
/**
29-
* @param _requestor to fetch flags from cloud services
101+
* @param _requestor to fetch flags
30102
* @param _pollInterval in seconds controlling how frequently polling request is made
31103
* @param _logger for logging
32104
* @param _processResponseAsFDv1 defaults to false, but if set to true, this data source will process
@@ -127,7 +199,7 @@ export default class PollingProcessorFDv2 implements subsystemCommon.DataSource
127199
} else {
128200
// FDv1 case
129201
const parsed = JSON.parse(body) as FlagsAndSegments;
130-
this._processFDv1FlagsAndSegments(payloadProcessor, parsed);
202+
processFDv1FlagsAndSegments(payloadProcessor, parsed);
131203
}
132204

133205
statusCallback(subsystemCommon.DataSourceState.Valid);
@@ -150,79 +222,7 @@ export default class PollingProcessorFDv2 implements subsystemCommon.DataSource
150222
this._timeoutHandle = setTimeout(() => {
151223
this._poll(dataCallback, statusCallback, selectorGetter);
152224
}, sleepFor);
153-
}, this._selectorAsQueryParams(selectorGetter?.()));
154-
}
155-
156-
private _selectorAsQueryParams(selector: string | undefined): { key: string; value: string }[] {
157-
if (!selector) {
158-
return [];
159-
}
160-
161-
return [
162-
{
163-
key: 'basis',
164-
value: selector,
165-
},
166-
];
167-
}
168-
169-
// helper function to transform FDv1 response data into events the PayloadProcessor can parse
170-
private _processFDv1FlagsAndSegments(
171-
payloadProcessor: internal.PayloadProcessor,
172-
data: FlagsAndSegments,
173-
) {
174-
payloadProcessor.processEvents([
175-
{
176-
event: `server-intent`,
177-
data: {
178-
payloads: [
179-
{
180-
id: `FDv1Fallback`,
181-
target: 1,
182-
intentCode: `xfer-full`,
183-
},
184-
],
185-
},
186-
},
187-
]);
188-
189-
Object.entries(data?.flags || []).forEach(([key, flag]) => {
190-
payloadProcessor.processEvents([
191-
{
192-
event: `put-object`,
193-
data: {
194-
kind: 'flag',
195-
key,
196-
version: flag.version,
197-
object: flag,
198-
},
199-
},
200-
]);
201-
});
202-
203-
Object.entries(data?.segments || []).forEach(([key, segment]) => {
204-
payloadProcessor.processEvents([
205-
{
206-
event: `put-object`,
207-
data: {
208-
kind: 'segment',
209-
key,
210-
version: segment.version,
211-
object: segment,
212-
},
213-
},
214-
]);
215-
});
216-
217-
payloadProcessor.processEvents([
218-
{
219-
event: `payload-transferred`,
220-
data: {
221-
state: `FDv1Fallback`,
222-
version: 1,
223-
},
224-
},
225-
]);
225+
}, selectorAsQueryParams(selectorGetter?.()));
226226
}
227227

228228
start(

0 commit comments

Comments
 (0)