-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpanDomainAuth.ts
More file actions
41 lines (32 loc) · 1.14 KB
/
panDomainAuth.ts
File metadata and controls
41 lines (32 loc) · 1.14 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
import iniparser from "iniparser";
import { S3 } from "@aws-sdk/client-s3";
import { Stage } from "./types/stage";
const STAGE = (process.env.STAGE as Stage) || "LOCAL";
const pandaConfigFilenameLookup: { [stage in Stage]: string } = {
PROD: "gutools.co.uk.settings",
CODE: "code.dev-gutools.co.uk.settings",
LOCAL: "local.dev-gutools.co.uk.settings",
} as const;
export const pandaSettingsBucketName = "pan-domain-auth-settings";
export const pandaPublicConfigFilename = `${
pandaConfigFilenameLookup[STAGE] || pandaConfigFilenameLookup["LOCAL"]
}.public`;
export const pandaCookieName = "gutoolsAuth-assym";
const pandaConfigLocation = {
Bucket: pandaSettingsBucketName,
Key:
STAGE === "PROD"
? pandaConfigFilenameLookup["PROD"]
: pandaConfigFilenameLookup["CODE"],
};
export const getPandaConfig = async <T>(s3: S3) => {
const pandaConfigIni = await s3
.getObject(pandaConfigLocation)
.then(({ Body }) => Body?.transformToString());
if (!pandaConfigIni) {
throw Error(
`could not read panda config ${JSON.stringify(pandaConfigLocation)}`
);
}
return iniparser.parseString(pandaConfigIni) as T;
};