-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathdecorateHeaders.ts
More file actions
37 lines (34 loc) · 1.08 KB
/
decorateHeaders.ts
File metadata and controls
37 lines (34 loc) · 1.08 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
import { objectAssign } from '../utils/lang/objectAssign';
import { ISettings } from '../types';
const FORBIDDEN_HEADERS = new Set([
'splitsdkclientkey',
'splitsdkversion',
'splitsdkmachineip',
'splitsdkmachinename',
'splitsdkimpressionsmode',
'host',
'referrer',
'content-type',
'content-length',
'content-encoding',
'accept',
'keep-alive',
'x-fastly-debug'
]);
export function decorateHeaders(settings: ISettings, headers: Record<string, string>) {
if (settings.sync.requestOptions?.getHeaderOverrides) {
try {
const headerOverrides = settings.sync.requestOptions.getHeaderOverrides({ headers: objectAssign({}, headers) });
Object.keys(headerOverrides)
.filter(key => !FORBIDDEN_HEADERS.has(key.toLowerCase()))
.forEach(key => headers[key] = headerOverrides[key]);
} catch (e) {
settings.log.error('Problem adding custom headers to request decorator: ' + e);
}
}
return headers;
}
export function removeNonISO88591(input: string) {
// eslint-disable-next-line no-control-regex
return input.replace(/[^\x00-\xFF]/g, '');
}