mirror of
https://github.com/imjasonh/terraform-playground
synced 2026-07-06 23:12:22 +00:00
use R2 CRUD example
Signed-off-by: Jason Hall <jason@chainguard.dev>
This commit is contained in:
parent
f5ae8b5cb2
commit
7fa6da5a38
1 changed files with 33 additions and 11 deletions
|
|
@ -1,16 +1,38 @@
|
||||||
|
// https://developers.cloudflare.com/r2/api/workers/workers-api-usage/#4-access-your-r2-bucket-from-your-worker
|
||||||
export default {
|
export default {
|
||||||
async fetch(request, env, ctx) {
|
async fetch(request, env) {
|
||||||
let value = await env.KV.get("foo");
|
const url = new URL(request.url);
|
||||||
await env.KV.put("foo", value + "r");
|
const key = url.pathname.slice(1);
|
||||||
|
|
||||||
let obj = await env.R2.get("foo");
|
switch (request.method) {
|
||||||
if (!obj) {
|
case 'PUT':
|
||||||
obj = "ba";
|
await env.R2.put(key, request.body);
|
||||||
} else {
|
return new Response(`Put ${key} successfully!`);
|
||||||
obj = await obj.text();
|
case 'GET':
|
||||||
|
const object = await env.R2.get(key);
|
||||||
|
|
||||||
|
if (object === null) {
|
||||||
|
return new Response('Object Not Found', { status: 404 });
|
||||||
|
}
|
||||||
|
|
||||||
|
const headers = new Headers();
|
||||||
|
object.writeHttpMetadata(headers);
|
||||||
|
headers.set('etag', object.httpEtag);
|
||||||
|
|
||||||
|
return new Response(object.body, {
|
||||||
|
headers,
|
||||||
|
});
|
||||||
|
case 'DELETE':
|
||||||
|
await env.R2.delete(key);
|
||||||
|
return new Response('Deleted!');
|
||||||
|
|
||||||
|
default:
|
||||||
|
return new Response('Method Not Allowed', {
|
||||||
|
status: 405,
|
||||||
|
headers: {
|
||||||
|
Allow: 'PUT, GET, DELETE',
|
||||||
|
},
|
||||||
|
});
|
||||||
}
|
}
|
||||||
await env.R2.put("foo", obj + "r");
|
|
||||||
|
|
||||||
return new Response(`${value} / ${obj}`);
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue