@sphereon/ssi-sdk.contact-manager-rest-api
Version:
246 lines (243 loc) • 8.04 kB
JavaScript
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