fix: readEnvVariable throws error when variable is string
This commit is contained in:
@@ -43,16 +43,19 @@ app.post(
|
|||||||
`Internal new episode route, aniListId: ${aniListId}, episodeNumber: ${episodeNumber}`,
|
`Internal new episode route, aniListId: ${aniListId}, episodeNumber: ${episodeNumber}`,
|
||||||
);
|
);
|
||||||
|
|
||||||
// if (!(await verifyQstashHeader(env<Env, typeof c>(c, "workerd"), c.req))) {
|
if (!(await verifyQstashHeader(env<Env, typeof c>(c, "workerd"), c.req))) {
|
||||||
// return c.json(ErrorResponse, { status: 401 });
|
return c.json(ErrorResponse, { status: 401 });
|
||||||
// }
|
}
|
||||||
|
|
||||||
const domain = getCurrentDomain(c.req);
|
const domain = getCurrentDomain(c.req);
|
||||||
const { success, result: fetchEpisodesResult } = await fetch(
|
const { success, result: fetchEpisodesResult } = await fetch(
|
||||||
`${domain}/episodes/${aniListId}`,
|
`${domain}/episodes/${aniListId}`,
|
||||||
).then((res) => res.json<EpisodesResponseSchema>());
|
).then((res) => res.json<EpisodesResponseSchema>());
|
||||||
if (!success) {
|
if (!success) {
|
||||||
await scheduleRetry(readEnvVariable(c.env, "QSTASH_TOKEN"), c.req);
|
await scheduleRetry(
|
||||||
|
readEnvVariable(env<Env, typeof c>(c, "workerd"), "QSTASH_TOKEN"),
|
||||||
|
c.req,
|
||||||
|
);
|
||||||
return c.json(ErrorResponse, { status: 500 });
|
return c.json(ErrorResponse, { status: 500 });
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,7 +64,10 @@ app.post(
|
|||||||
(episode) => episode.number === episodeNumber,
|
(episode) => episode.number === episodeNumber,
|
||||||
);
|
);
|
||||||
if (!episode) {
|
if (!episode) {
|
||||||
await scheduleRetry(readEnvVariable(c.env, "QSTASH_TOKEN"), c.req);
|
await scheduleRetry(
|
||||||
|
readEnvVariable(env<Env, typeof c>(c, "workerd"), "QSTASH_TOKEN"),
|
||||||
|
c.req,
|
||||||
|
);
|
||||||
return c.json(ErrorResponse, { status: 404 });
|
return c.json(ErrorResponse, { status: 404 });
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,7 +85,10 @@ app.post(
|
|||||||
},
|
},
|
||||||
).then((res) => res.json<FetchUrlResponse>());
|
).then((res) => res.json<FetchUrlResponse>());
|
||||||
if (!fetchUrlSuccess) {
|
if (!fetchUrlSuccess) {
|
||||||
await scheduleRetry(readEnvVariable(c.env, "QSTASH_TOKEN"), c.req);
|
await scheduleRetry(
|
||||||
|
readEnvVariable(env<Env, typeof c>(c, "workerd"), "QSTASH_TOKEN"),
|
||||||
|
c.req,
|
||||||
|
);
|
||||||
return c.json(ErrorResponse, { status: 500 });
|
return c.json(ErrorResponse, { status: 500 });
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -92,7 +101,10 @@ app.post(
|
|||||||
tokens.map(async (token) => {
|
tokens.map(async (token) => {
|
||||||
return sendFcmMessage(
|
return sendFcmMessage(
|
||||||
mapKeys(
|
mapKeys(
|
||||||
readEnvVariable<AdminSdkCredentials>(c.env, "ADMIN_SDK_JSON"),
|
readEnvVariable<AdminSdkCredentials>(
|
||||||
|
env<Env, typeof c>(c, "workerd"),
|
||||||
|
"ADMIN_SDK_JSON",
|
||||||
|
),
|
||||||
(_, key) => changeStringCase(key, Case.snake_case, Case.camelCase),
|
(_, key) => changeStringCase(key, Case.snake_case, Case.camelCase),
|
||||||
) as unknown as AdminSdkCredentials,
|
) as unknown as AdminSdkCredentials,
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,12 +3,29 @@ import { describe, expect, it } from "bun:test";
|
|||||||
import { readEnvVariable } from "./readEnvVariable";
|
import { readEnvVariable } from "./readEnvVariable";
|
||||||
|
|
||||||
describe("readEnvVariable", () => {
|
describe("readEnvVariable", () => {
|
||||||
it("env & variable defined, returns env value", () => {
|
describe("env & variable defined", () => {
|
||||||
|
it("returns boolean", () => {
|
||||||
expect(
|
expect(
|
||||||
readEnvVariable<boolean>({ ENABLE_ANIFY: "false" }, "ENABLE_ANIFY"),
|
readEnvVariable<boolean>({ ENABLE_ANIFY: "false" }, "ENABLE_ANIFY"),
|
||||||
).toBe(false);
|
).toBe(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("returns string", () => {
|
||||||
|
expect(
|
||||||
|
readEnvVariable<string>(
|
||||||
|
{ QSTASH_TOKEN: "ehf73g8gyriuvnieojwicbg83hc" },
|
||||||
|
"QSTASH_TOKEN",
|
||||||
|
),
|
||||||
|
).toBe("ehf73g8gyriuvnieojwicbg83hc");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("returns number", () => {
|
||||||
|
expect(
|
||||||
|
readEnvVariable<number>({ NUM_RETRIES: "123" }, "NUM_RETRIES"),
|
||||||
|
).toBe(123);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it("env defined but variable not defined, returns default value", () => {
|
it("env defined but variable not defined, returns default value", () => {
|
||||||
expect(readEnvVariable<boolean>({ FOO: "bar" }, "ENABLE_ANIFY")).toBe(true);
|
expect(readEnvVariable<boolean>({ FOO: "bar" }, "ENABLE_ANIFY")).toBe(true);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -11,5 +11,13 @@ export function readEnvVariable<T>(
|
|||||||
env: Bindings | undefined,
|
env: Bindings | undefined,
|
||||||
envVariable: EnvVariable,
|
envVariable: EnvVariable,
|
||||||
): T {
|
): T {
|
||||||
|
try {
|
||||||
return JSON.parse(env?.[envVariable] ?? null) ?? defaultValues[envVariable];
|
return JSON.parse(env?.[envVariable] ?? null) ?? defaultValues[envVariable];
|
||||||
|
} catch (error) {
|
||||||
|
if (error instanceof SyntaxError) {
|
||||||
|
return env![envVariable];
|
||||||
|
}
|
||||||
|
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,10 @@ const args = new Set(process.argv.slice(2));
|
|||||||
const isDevMode = args.has("--dev");
|
const isDevMode = args.has("--dev");
|
||||||
const shouldTriggerLatestEpisode = args.has("--trigger-latest-episode");
|
const shouldTriggerLatestEpisode = args.has("--trigger-latest-episode");
|
||||||
|
|
||||||
|
if (isDevMode) {
|
||||||
|
console.log("Running in dev mode");
|
||||||
|
}
|
||||||
|
|
||||||
await getTitleIds().then((titles) =>
|
await getTitleIds().then((titles) =>
|
||||||
Promise.all(
|
Promise.all(
|
||||||
titles.map((title) =>
|
titles.map((title) =>
|
||||||
@@ -89,7 +93,6 @@ async function triggerNextEpisodeRoute(titleId: number) {
|
|||||||
episodeNumber: mostRecentEpisodeNumber,
|
episodeNumber: mostRecentEpisodeNumber,
|
||||||
},
|
},
|
||||||
retries: 0,
|
retries: 0,
|
||||||
contentBasedDeduplication: true,
|
|
||||||
})
|
})
|
||||||
.then(() => true)
|
.then(() => true)
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user