UNPKG

@m-ld/gateway

Version:

m-ld gateway for services

72 lines 6.11 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; import { EndPoint, post, put, sendChunked, use } from './EndPoint.js'; import { Authorization } from '../server/index.js'; import { as, validate } from '../lib/index.js'; import { BadRequestError, NotFoundError } from './errors.js'; import { consume } from 'rx-flowable/consume'; import { Readable } from 'stream'; export class SubdomainEndPoint extends EndPoint { constructor(outer) { super(outer, '/domain/:account/:name'); } get gateway() { return this.outer.gateway; } bindSubdomainId(req) { try { req.set('id', this.gateway.ownedId(req.params).validate()); } catch (e) { // ownedId throws strings throw new BadRequestError('Bad domain %s', req.params); } } async bindAuthorisedWho(req) { const auth = Authorization.fromRequest(req); req.set('who', await auth.verifyUser(this.gateway, { id: req.get('id'), forWrite: req.isUpload() ? 'Subdomain' : undefined })); } async putSubdomain(req, res) { const { useSignatures } = validate(req.body ?? {}, as.object({ useSignatures: as.boolean().optional() })); const { account, name } = req.get('id'); res.json(await this.gateway.subdomainConfig({ useSignatures, account, name }, 'any', req.get('who'))); } async pollUpdates(req, res) { const sd = await this.gateway.getSubdomain(req.get('id')); if (sd == null) throw new NotFoundError; res.setHeader('ETag', this.etag(sd)); res.setHeader('Location', this.lockUrl(req)); await sendChunked(res, consume(Readable.from(sd.poll())), 201); } lockUrl(req) { const id = req.get('id'); return `/domain/${id.account}/${id.name}/state?lock`; } etag(sd) { return `"${sd.tick}"`; } } __decorate([ use ], SubdomainEndPoint.prototype, "bindSubdomainId", null); __decorate([ use ], SubdomainEndPoint.prototype, "bindAuthorisedWho", null); __decorate([ put ], SubdomainEndPoint.prototype, "putSubdomain", null); __decorate([ post('/poll') ], SubdomainEndPoint.prototype, "pollUpdates", null); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3ViZG9tYWluRW5kUG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaHR0cC9TdWJkb21haW5FbmRQb2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFjLElBQUksRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRixPQUFPLEVBQUUsYUFBYSxFQUFPLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFrQixFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFRbEMsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFFBQXFCO0lBQzFELFlBQVksS0FBa0I7UUFDNUIsS0FBSyxDQUFDLEtBQUssRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFHRCxlQUFlLENBQUMsR0FBcUI7UUFDbkMsSUFBSTtZQUNGLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQzVEO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVix5QkFBeUI7WUFDekIsTUFBTSxJQUFJLGVBQWUsQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQztJQUdLLEFBQU4sS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQXFCO1FBQzNDLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakQsRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ3RFLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUdLLEFBQU4sS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFxQixFQUFFLEdBQWE7UUFDckQsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDO1lBQzNELGFBQWEsRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFO1NBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBQ0osTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUMxQyxhQUFhLEVBQUUsT0FBTyxFQUFFLElBQUk7U0FDN0IsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUdLLEFBQU4sS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFxQixFQUFFLEdBQWE7UUFDcEQsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUQsSUFBSSxFQUFFLElBQUksSUFBSTtZQUNaLE1BQU0sSUFBSSxhQUFhLENBQUM7UUFDMUIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM3QyxNQUFNLFdBQVcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQXFCO1FBQzNCLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsT0FBTyxXQUFXLEVBQUUsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLElBQUksYUFBYSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFJLENBQUMsRUFBa0I7UUFDckIsT0FBTyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQztJQUN4QixDQUFDO0NBQ0Y7QUE5Q0M7SUFEQyxHQUFHO3dEQVFIO0FBR0s7SUFETCxHQUFHOzBEQU1IO0FBR0s7SUFETCxHQUFHO3FEQVNIO0FBR0s7SUFETCxJQUFJLENBQUMsT0FBTyxDQUFDO29EQVFiIn0=