UNPKG

@versatiles/google-cloud

Version:
46 lines (45 loc) 1.49 kB
import { createHash } from 'crypto'; import { lookup } from 'mrmime'; export class BucketFileMetadata { #header; constructor(options = {}) { let size; if (typeof options.size === 'number') { size = String(options.size); } else { size = options.size; } this.#header = { cacheControl: options.cacheControl ?? 'max-age=604800', contentType: options.contentType ?? lookup(options.filename ?? '') ?? 'application/octet-stream', etag: options.etag ?? this.generateHash(options.filename, options.size, options.mtime), size, }; } get etag() { return this.#header.etag; } setHeaders(headers) { const header = this.#header; if (header.size != null) headers.set('content-length', header.size); if (header.cacheControl != null) headers.set('cache-control', header.cacheControl); headers.set('etag', header.etag); headers.set('content-type', header.contentType); } toString() { return JSON.stringify({ contentLength: this.#header.size, cacheControl: this.#header.cacheControl, etag: this.#header.etag, contentType: this.#header.contentType, }); } generateHash(...args) { const hash = createHash('sha256'); hash.update(args.join(';')); return hash.digest('hex'); } }