import * as plugins from '../plugins.js'; import type { S3Context } from '../classes/context.js'; /** * Service-level operations (root /) */ export class ServiceController { /** * GET / - List all buckets */ public static async listBuckets( req: plugins.http.IncomingMessage, res: plugins.http.ServerResponse, ctx: S3Context, params: Record ): Promise { const buckets = await ctx.store.listBuckets(); await ctx.sendXML({ ListAllMyBucketsResult: { '@_xmlns': 'http://s3.amazonaws.com/doc/2006-03-01/', Owner: { ID: '123456789000', DisplayName: 'S3rver', }, Buckets: { Bucket: buckets.map((bucket) => ({ Name: bucket.name, CreationDate: bucket.creationDate.toISOString(), })), }, }, }); } }