diff --git a/src/index.ts b/src/index.ts
index 445bd49..c5b3b57 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -319,41 +319,43 @@ export default {
}
break;
case '1': {
- let object = await bucket.head(resource_path);
- if (object === null && resource_path.endsWith('/')) {
- object = await bucket.head(resource_path.slice(0, -1));
- }
+ if (resource_path !== "") {
+ let object = await bucket.head(resource_path);
+ if (object === null && resource_path.endsWith('/')) {
+ object = await bucket.head(resource_path.slice(0, -1));
+ }
- if (object === null) {
- response = new Response('Not Found', { status: 404 });
- break;
- }
+ if (object === null) {
+ response = new Response('Not Found', { status: 404 });
+ break;
+ }
- if (object.customMetadata?.resourcetype !== '') {
- let page = `
-
-
- /${resource_path}
-
-
- ${Object.entries(fromR2Object(object))
- .filter(([_, value]) => value !== undefined)
- .map(([key, value]) => `<${key}>${value}${key}>`)
- .join('\n ')
- }
-
- HTTP/1.1 200 OK
-
-
-
-`;
- response = new Response(page, {
- status: 207,
- headers: {
- 'Content-Type': 'text/xml',
- },
- });
- break;
+ if (object.customMetadata?.resourcetype !== '') {
+ let page = `
+
+
+ /${resource_path}
+
+
+ ${Object.entries(fromR2Object(object))
+ .filter(([_, value]) => value !== undefined)
+ .map(([key, value]) => `<${key}>${value}${key}>`)
+ .join('\n ')
+ }
+
+ HTTP/1.1 200 OK
+
+
+
+ `;
+ response = new Response(page, {
+ status: 207,
+ headers: {
+ 'Content-Type': 'text/xml',
+ },
+ });
+ break;
+ }
}
let page = `
@@ -362,7 +364,7 @@ export default {
let cursor: string | undefined = undefined;
do {
var r2_objects = await bucket.list({
- prefix: resource_path.endsWith('/') ? resource_path : resource_path + '/',
+ prefix: resource_path.endsWith('/') || resource_path === "" ? resource_path : resource_path + '/',
delimiter: '/',
cursor: cursor,
include: ['httpMetadata', 'customMetadata'],
@@ -400,41 +402,43 @@ export default {
}
break;
case 'infinity': {
- let object = await bucket.head(resource_path);
- if (object === null && resource_path.endsWith('/')) {
- object = await bucket.head(resource_path.slice(0, -1));
- }
+ if (resource_path !== "") {
+ let object = await bucket.head(resource_path);
+ if (object === null && resource_path.endsWith('/')) {
+ object = await bucket.head(resource_path.slice(0, -1));
+ }
- if (object === null) {
- response = new Response('Not Found', { status: 404 });
- break;
- }
+ if (object === null) {
+ response = new Response('Not Found', { status: 404 });
+ break;
+ }
- if (object.customMetadata?.resourcetype !== '') {
- let page = `
+ if (object.customMetadata?.resourcetype !== '') {
+ let page = `
/${resource_path}
${Object.entries(fromR2Object(object))
- .filter(([_, value]) => value !== undefined)
- .map(([key, value]) => `<${key}>${value}${key}>`)
- .join('\n ')
- }
+ .filter(([_, value]) => value !== undefined)
+ .map(([key, value]) => `<${key}>${value}${key}>`)
+ .join('\n ')
+ }
HTTP/1.1 200 OK
`;
- response = new Response(page, {
- status: 207,
- headers: {
- 'Content-Type': 'text/xml',
- },
- });
- break;
+ response = new Response(page, {
+ status: 207,
+ headers: {
+ 'Content-Type': 'text/xml',
+ },
+ });
+ break;
+ }
}
let page = `
@@ -443,7 +447,7 @@ export default {
let cursor: string | undefined = undefined;
do {
var r2_objects = await bucket.list({
- prefix: resource_path.endsWith('/') ? resource_path : resource_path + '/',
+ prefix: resource_path.endsWith('/') || resource_path === "" ? resource_path : resource_path + '/',
cursor: cursor,
include: ['httpMetadata', 'customMetadata'],
});