UNPKG

@sphereon/ssi-sdk.contact-manager-rest-api

Version:

246 lines (243 loc) • 8.04 kB
var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); // src/contact-manager-api-server.ts import { agentContext } from "@sphereon/ssi-sdk.core"; import express from "express"; // src/api-functions.ts import { checkAuth, sendErrorResponse } from "@sphereon/ssi-express-support"; function partiesReadEndpoint(router, context, opts) { if (opts?.enabled === false) { console.log(`"partiesReadEndpoint" Endpoint is disabled`); return; } const path = opts?.path ?? "/parties"; router.get(path, checkAuth(opts?.endpoint), async (request, response) => { try { const parties = await context.agent.cmGetContacts(); response.statusCode = 200; return response.send(parties); } catch (error) { return sendErrorResponse(response, 500, error.message, error); } }); } __name(partiesReadEndpoint, "partiesReadEndpoint"); function partyReadEndpoint(router, context, opts) { if (opts?.enabled === false) { console.log(`"partyReadEndpoint" Endpoint is disabled`); return; } const path = opts?.path ?? "/parties"; router.get(`${path}/:partyId`, checkAuth(opts?.endpoint), async (request, response) => { try { const partyId = request.params.partyId; const party = await context.agent.cmGetContact({ contactId: partyId }); response.statusCode = 200; return response.send(party); } catch (error) { return sendErrorResponse(response, 500, error.message, error); } }); } __name(partyReadEndpoint, "partyReadEndpoint"); function partyWriteEndpoint(router, context, opts) { if (opts?.enabled === false) { console.log(`"partyWriteEndpoint" Endpoint is disabled`); return; } const path = opts?.path ?? "/parties"; router.post(path, async (request, response) => { try { const addParty = request.body; const party = await context.agent.cmAddContact(addParty); response.statusCode = 201; return response.send(party); } catch (error) { return sendErrorResponse(response, 500, error.message, error); } }); } __name(partyWriteEndpoint, "partyWriteEndpoint"); function partyDeleteEndpoint(router, context, opts) { if (opts?.enabled === false) { console.log(`"partyDeleteEndpoint" Endpoint is disabled`); return; } const path = opts?.path ?? "/parties"; router.delete(`${path}/:partyId`, async (request, response) => { try { const partyId = request.params.partyId; const result = await context.agent.cmRemoveContact({ contactId: partyId }); response.statusCode = 200; return response.send(result); } catch (error) { return sendErrorResponse(response, 500, error.message, error); } }); } __name(partyDeleteEndpoint, "partyDeleteEndpoint"); function partiesTypeReadEndpoint(router, context, opts) { if (opts?.enabled === false) { console.log(`"partiesTypeReadEndpoint" Endpoint is disabled`); return; } const path = opts?.path ?? "/party-types"; router.get(path, checkAuth(opts?.endpoint), async (request, response) => { try { const partyTypes = await context.agent.cmGetContactTypes(); response.statusCode = 200; return response.send(partyTypes); } catch (error) { return sendErrorResponse(response, 500, error.message, error); } }); } __name(partiesTypeReadEndpoint, "partiesTypeReadEndpoint"); function partyTypeReadEndpoint(router, context, opts) { if (opts?.enabled === false) { console.log(`"partyTypeReadEndpoint" Endpoint is disabled`); return; } const path = opts?.path ?? "/party-types"; router.get(`${path}/:partyTypeId`, checkAuth(opts?.endpoint), async (request, response) => { try { const partyTypeId = request.params.partyTypeId; const partyType = await context.agent.cmGetContactType({ contactTypeId: partyTypeId }); response.statusCode = 200; return response.send(partyType); } catch (error) { return sendErrorResponse(response, 500, error.message, error); } }); } __name(partyTypeReadEndpoint, "partyTypeReadEndpoint"); function identitiesReadEndpoint(router, context, opts) { if (opts?.enabled === false) { console.log(`"identitiesReadEndpoint" Endpoint is disabled`); return; } const path = opts?.path ?? "/identities"; router.get(path, checkAuth(opts?.endpoint), async (request, response) => { try { const identities = await context.agent.cmGetIdentities(); response.statusCode = 200; return response.send(identities); } catch (error) { return sendErrorResponse(response, 500, error.message, error); } }); } __name(identitiesReadEndpoint, "identitiesReadEndpoint"); function identityReadEndpoints(router, context, opts) { if (opts?.enabled === false) { console.log(`"identityReadEndpoints" Endpoint is disabled`); return; } const path = opts?.path ?? "/identities"; router.get(`${path}/:identityId`, checkAuth(opts?.endpoint), async (request, response) => { try { const identityId = request.params.identityId; const identity = await context.agent.cmGetIdentity({ identityId }); response.statusCode = 200; return response.send(identity); } catch (error) { return sendErrorResponse(response, 500, error.message, error); } }); } __name(identityReadEndpoints, "identityReadEndpoints"); // src/contact-manager-api-server.ts import { copyGlobalAuthToEndpoints } from "@sphereon/ssi-express-support"; var ContactManagerApiServer = class { static { __name(this, "ContactManagerApiServer"); } _express; _agent; _opts; _router; constructor(args) { const { agent, opts } = args; this._agent = agent; copyGlobalAuthToEndpoints({ opts, keys: [ "partyRead", "partyWrite", "partyTypeRead", "identityRead" ] }); if (opts?.endpointOpts?.globalAuth?.secureContactManagerEndpoints) { copyGlobalAuthToEndpoints({ opts, keys: [ "partyRead", "partyWrite", "partyTypeRead", "identityRead" ] }); } this._opts = opts; this._express = args.expressSupport.express; this._router = express.Router(); const context = agentContext(agent); const features = opts?.enableFeatures ?? [ "party_read", "party_write", "party_type_read", "identity_read" ]; console.log(`Contact Manager API enabled, with features: ${JSON.stringify(features)}}`); if (features.includes("party_read")) { partiesReadEndpoint(this.router, context, this._opts?.endpointOpts?.partyRead); partyReadEndpoint(this.router, context, this._opts?.endpointOpts?.partyRead); } if (features.includes("party_write")) { partyWriteEndpoint(this.router, context, this._opts?.endpointOpts?.partyWrite); partyDeleteEndpoint(this.router, context, this._opts?.endpointOpts?.partyWrite); } if (features.includes("party_type_read")) { partiesTypeReadEndpoint(this.router, context, this._opts?.endpointOpts?.partyTypeRead); partyTypeReadEndpoint(this.router, context, this._opts?.endpointOpts?.partyTypeRead); } if (features.includes("identity_read")) { identitiesReadEndpoint(this.router, context, this._opts?.endpointOpts?.identityRead); identityReadEndpoints(this.router, context, this._opts?.endpointOpts?.identityRead); } this._express.use(opts?.endpointOpts?.basePath ?? "", this.router); } get express() { return this._express; } get router() { return this._router; } get agent() { return this._agent; } get opts() { return this._opts; } }; export { ContactManagerApiServer, identitiesReadEndpoint, identityReadEndpoints, partiesReadEndpoint, partiesTypeReadEndpoint, partyDeleteEndpoint, partyReadEndpoint, partyTypeReadEndpoint, partyWriteEndpoint }; //# sourceMappingURL=index.js.map