UNPKG

semantic-network

Version:

A utility library for manipulating a list of links that form a semantic interface to a network of resources.

53 lines 2.37 kB
import { __awaiter } from "tslib"; import { LinkUtil } from 'semantic-link'; import { LinkRelation } from '../linkRelation'; import anylogger from 'anylogger'; import { bottleneckLoader } from './bottleneckLoader'; const log = anylogger('HttpRequest'); export class HttpRequest { constructor(options) { this.options = options; const { loader = bottleneckLoader } = Object.assign({}, options); this.loader = loader; if (!loader) { throw new Error('Loader must be provided'); } } /** * TODO: should probably return T | undefined */ load(link, rel, options) { return __awaiter(this, void 0, void 0, function* () { const { getFactory = this.options.getFactory } = Object.assign({}, options); // TODO: does the id factory needs to be eTag aware? // note: leaving media type out of id const id = LinkUtil.getUri(link, rel); if (id) { return yield this.loader.schedule(id, () => getFactory(link, rel, options), options); } else { log.warn('uri not found on link for id - using default loader'); return yield this.loader.submit(() => getFactory(link, rel, options), options); } }); } update(resource, document, options) { return __awaiter(this, void 0, void 0, function* () { const { rel = LinkRelation.Self, putFactory = this.options.putFactory, } = Object.assign({}, options); return yield this.loader.submit(() => putFactory(resource, rel, document, options), options); }); } create(resource, document, options) { return __awaiter(this, void 0, void 0, function* () { const { rel = LinkRelation.Self, postFactory = this.options.postFactory, } = Object.assign({}, options); return yield this.loader.submit(() => postFactory(resource, rel, document, options), options); }); } del(resource, options) { return __awaiter(this, void 0, void 0, function* () { const { rel = LinkRelation.Self, deleteFactory = this.options.deleteFactory, } = Object.assign({}, options); return yield this.loader.submit(() => deleteFactory(resource, rel), options); }); } } //# sourceMappingURL=httpRequest.js.map