@nephele/adapter-s3
Version:
S3 (or compatible) object storage adapter for the Nephele WebDAV server.
31 lines (30 loc) • 1.45 kB
TypeScript
import type { Request } from 'express';
import type { S3ClientConfig } from '@aws-sdk/client-s3';
import { S3 } from '@aws-sdk/client-s3';
import type { Adapter as AdapterInterface, AuthResponse, Method, User } from 'nephele';
import Resource from './Resource.js';
export type AdapterConfig = {
s3Config: S3ClientConfig;
bucket: string;
uploadQueueSize?: number;
root?: string;
};
export default class Adapter implements AdapterInterface {
s3: S3;
bucket: string;
uploadQueueSize: number;
root: string;
constructor({ s3Config, bucket, uploadQueueSize, root }: AdapterConfig);
urlToRelativePath(url: URL, baseUrl: URL): string | null;
relativePathToUrl(pathname: string, baseUrl: URL): URL;
relativePathToKey(pathname: string): string;
keyToRelativePath(key: string): string;
getComplianceClasses(_url: URL, _request: Request, _response: AuthResponse): Promise<string[]>;
getAllowedMethods(_url: URL, _request: Request, _response: AuthResponse): Promise<never[]>;
getOptionsResponseCacheControl(_url: URL, _request: Request, _response: AuthResponse): Promise<string>;
isAuthorized(_url: URL, _method: string, _baseUrl: URL, _user: User): Promise<boolean>;
getResource(url: URL, baseUrl: URL): Promise<Resource>;
newResource(url: URL, baseUrl: URL): Promise<Resource>;
newCollection(url: URL, baseUrl: URL): Promise<Resource>;
getMethod(method: string): typeof Method;
}