UNPKG

@nephele/adapter-s3

Version:

S3 (or compatible) object storage adapter for the Nephele WebDAV server.

59 lines (47 loc) 1.28 kB
import type { Lock as LockInterface } from 'nephele'; import Resource from './Resource.js'; export default class Lock implements LockInterface { resource: Resource; token: string = ''; date: Date = new Date(); timeout: number = 1000 * 60 * 60 * 24 * 2; // Default to two day timeout. scope: 'exclusive' | 'shared' = 'exclusive'; depth: '0' | 'infinity' = '0'; provisional: boolean = false; owner: any = {}; username: string; constructor({ resource, username, }: { resource: Resource; username: string; }) { this.resource = resource; this.username = username; } async save() { const meta = await this.resource.getMetadata(); if (meta.locks == null) { meta.locks = {}; } meta.locks[this.token] = { username: this.username, date: this.date.getTime(), timeout: this.timeout, scope: this.scope, depth: this.depth, provisional: this.provisional, owner: this.owner, }; await this.resource.saveMetadata(meta); } async delete() { const meta = await this.resource.getMetadata(); if (meta.locks == null || !(this.token in meta.locks)) { return; } delete meta.locks[this.token]; await this.resource.saveMetadata(meta); } }