UNPKG

@kippurocks/libticketto-papi

Version:

A Kippu implementation of The Ticketto Protocol with Polkadot-API

97 lines (96 loc) 3.71 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; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; import { inject, injectable } from "inversify"; import { TOKEN } from "./types.js"; let KippuDirectoryCalls = class KippuDirectoryCalls { settings; url; byAccount; constructor(settings) { this.settings = settings; this.url = new URL("/directory", this.settings.apiEndpoint); this.byAccount = (accountId) => new URL(`/directory/${accountId}`, this.settings.apiEndpoint); } async processRequest(response) { if (!response.ok) { throw new Error(response.statusText); } } async insert(accountId, identity) { return this.processRequest(await fetch(this.url, { method: "POST", body: JSON.stringify({ accountId, identity, }), })); } async setIdentity(accountId, identity) { return this.processRequest(await fetch(this.byAccount(accountId), { method: "PUT", body: JSON.stringify({ identity }), })); } }; KippuDirectoryCalls = __decorate([ injectable(), __param(0, inject(TOKEN.SETTINGS)), __metadata("design:paramtypes", [Object]) ], KippuDirectoryCalls); export { KippuDirectoryCalls }; let KippuDirectoryStorage = class KippuDirectoryStorage { settings; url; byAccount; constructor(settings) { this.settings = settings; this.url = (params = {}) => { let url = new URL("/directory", this.settings.apiEndpoint); url.search = new URLSearchParams(params).toString(); return url; }; this.byAccount = (accountId) => new URL(`/directory/${accountId}`, this.settings.apiEndpoint); } async processRequest(url) { const response = await fetch(url()); switch (true) { case response.ok: return response.json(); case response.status === 404: return undefined; default: throw new Error(response.statusText); } } async all() { return this.processRequest(() => this.url()).then((r) => r ?? []); } async indexByDisplay(display) { return this.processRequest(() => this.url({ display })).then((r) => r ?? []); } async indexByPhone(phone) { return this.processRequest(() => this.url({ phone })).then((r) => r ?? []); } async indexByEmail(email) { return this.processRequest(() => this.url({ email })).then((r) => r ?? []); } async get(accountId) { return this.processRequest(() => this.byAccount(accountId)); } }; KippuDirectoryStorage = __decorate([ injectable(), __param(0, inject(TOKEN.SETTINGS)), __metadata("design:paramtypes", [Object]) ], KippuDirectoryStorage); export { KippuDirectoryStorage };