Skip to content

Commit

Permalink
add expiration_ttl for kv storage
Browse files Browse the repository at this point in the history
  • Loading branch information
lloydzhou committed Jul 25, 2024
1 parent 7c1bc1f commit d8afd1a
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 7 deletions.
27 changes: 21 additions & 6 deletions app/api/artifact/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,33 @@ import { getServerSideConfig } from "@/app/config/server";

async function handle(req: NextRequest, res: NextResponse) {
const serverConfig = getServerSideConfig();
const storeUrl = (key: string) =>
`https://api.cloudflare.com/client/v4/accounts/${serverConfig.cloudflareAccountId}/storage/kv/namespaces/${serverConfig.cloudflareKVNamespaceId}/values/${key}`;
const storeUrl = () =>
`https://api.cloudflare.com/client/v4/accounts/${serverConfig.cloudflareAccountId}/storage/kv/namespaces/${serverConfig.cloudflareKVNamespaceId}`;
const storeHeaders = () => ({
Authorization: `Bearer ${serverConfig.cloudflareKVApiKey}`,
});
if (req.method === "POST") {
const clonedBody = await req.text();
const hashedCode = md5.hash(clonedBody).trim();
const res = await fetch(storeUrl(hashedCode), {
headers: storeHeaders(),
const body = {
key: hashedCode,
value: clonedBody,
};
try {
const ttl = parseInt(serverConfig.cloudflareKVTTL);
if (ttl > 60) {
body["expiration_ttl"] = ttl;
}
} catch (e) {
console.error(e);
}
const res = await fetch(`${storeUrl()}/bulk`, {
headers: {
...storeHeaders(),
"Content-Type": "application/json",
},
method: "PUT",
body: clonedBody,
body: JSON.stringify([body]),
});
const result = await res.json();
console.log("save data", result);
Expand All @@ -32,7 +47,7 @@ async function handle(req: NextRequest, res: NextResponse) {
}
if (req.method === "GET") {
const id = req?.nextUrl?.searchParams?.get("id");
const res = await fetch(storeUrl(id as string), {
const res = await fetch(`${storeUrl()}/values/${id}`, {
headers: storeHeaders(),
method: "GET",
});
Expand Down
11 changes: 10 additions & 1 deletion app/components/artifact.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -180,8 +180,17 @@ export function Artifact() {
useEffect(() => {
if (id) {
fetch(`${ApiPath.Artifact}?id=${id}`)
.then((res) => {
if (res.status > 300) {
throw Error("can not get content");
}
return res;
})
.then((res) => res.text())
.then(setCode);
.then(setCode)
.catch((e) => {
showToast(Locale.Export.Artifact.Error);
});
}
}, [id]);

Expand Down
1 change: 1 addition & 0 deletions app/config/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@ export const getServerSideConfig = () => {
cloudflareAccountId: process.env.CLOUDFLARE_ACCOUNT_ID,
cloudflareKVNamespaceId: process.env.CLOUDFLARE_KV_NAMESPACE_ID,
cloudflareKVApiKey: getApiKey(process.env.CLOUDFLARE_KV_API_KEY),
cloudflareKVTTL: process.env.CLOUDFLARE_KV_TTL,

gtmId: process.env.GTM_ID,

Expand Down

0 comments on commit d8afd1a

Please sign in to comment.