@nephele/adapter-virtual
Version:
Virtual resource adapter for the Nephele WebDAV server.
47 lines (46 loc) • 1.71 kB
TypeScript
import type { Request } from 'express';
import type { Adapter as AdapterInterface, AuthResponse, Method, User } from 'nephele';
import Resource from './Resource.js';
export type File = {
name: string;
properties: {
creationdate: Date;
getlastmodified: Date;
owner?: string;
[k: string]: any;
};
locks: {
[token: string]: {
username: string;
date: number;
timeout: number;
scope: 'exclusive' | 'shared';
depth: '0' | 'infinity';
provisional: boolean;
owner: any;
};
};
content: Buffer;
};
export type Folder = Omit<File, 'content'> & {
children: (Folder | File)[];
};
export type RootFolder = Omit<Folder, 'name'>;
export type AdapterConfig = {
files: RootFolder;
};
export default class Adapter implements AdapterInterface {
files: RootFolder;
constructor({ files }: AdapterConfig);
urlToRelativePath(url: URL, baseUrl: URL): string | null;
basename(path: string): string;
dirname(path: 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;
}