@versatiles/google-cloud
Version:
A server for VersaTiles in Google Cloud Run
46 lines (45 loc) • 1.49 kB
JavaScript
import { createHash } from 'crypto';
import { lookup } from 'mrmime';
export class BucketFileMetadata {
constructor(options = {}) {
let size;
if (typeof options.size === 'number') {
size = String(options.size);
}
else {
size = options.size;
}
this.
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.
}
setHeaders(headers) {
const header = this.
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.
cacheControl: this.
etag: this.
contentType: this.
});
}
generateHash(...args) {
const hash = createHash('sha256');
hash.update(args.join(';'));
return hash.digest('hex');
}
}