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 {
|
||||
async fetch(request, env, ctx) {
|
||||
let value = await env.KV.get("foo");
|
||||
await env.KV.put("foo", value + "r");
|
||||
async fetch(request, env) {
|
||||
const url = new URL(request.url);
|
||||
const key = url.pathname.slice(1);
|
||||
|
||||
let obj = await env.R2.get("foo");
|
||||
if (!obj) {
|
||||
obj = "ba";
|
||||
} else {
|
||||
obj = await obj.text();
|
||||
switch (request.method) {
|
||||
case 'PUT':
|
||||
await env.R2.put(key, request.body);
|
||||
return new Response(`Put ${key} successfully!`);
|
||||
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