From 8381459da083531d4642f2cacdf2af28af04f294 Mon Sep 17 00:00:00 2001 From: dudleyneedham Date: Wed, 30 Apr 2025 14:28:53 +0200 Subject: [PATCH 1/2] feat: adding and removing service endpoints --- basics/serviceEndpoints.ts | 59 ++++++++++++++++++++++++++++++++++++++ basics/test.ts | 11 ++++++- 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 basics/serviceEndpoints.ts diff --git a/basics/serviceEndpoints.ts b/basics/serviceEndpoints.ts new file mode 100644 index 0000000..877c674 --- /dev/null +++ b/basics/serviceEndpoints.ts @@ -0,0 +1,59 @@ +import { ConfigService, DidHelpers } from '@kiltprotocol/sdk-js' +import { DidDocument, KiltAddress, SignerInterface } from '@kiltprotocol/types' + +const serviceId = '#example-service-id' + +export async function addServiceEndpoints( + didDocument: DidDocument, + signers: SignerInterface[], + submitter: SignerInterface<'Ed25519', KiltAddress> +): Promise { + const api = ConfigService.get('api') + + const transactionHandler = DidHelpers.addService({ + api, + didDocument, + signers: signers, + submitter: submitter, + service: { + id: serviceId, + type: ['example-type'], + serviceEndpoint: ['https://example.com/endpoint'], + }, + }) + + const result = await transactionHandler.submit() + + // Check if the result is rejected or confirmed + if (result.asRejected) { + throw new Error(`Service added failed: ${result.asRejected.error}`) + } + if (result.asConfirmed) { + console.log('Service added successfully') + } +} + +export async function removeServiceEndpoints( + didDocument: DidDocument, + signers: SignerInterface[], + submitter: SignerInterface<'Ed25519', KiltAddress> +): Promise { + const api = ConfigService.get('api') + + const transactionHandler = DidHelpers.removeService({ + api, + didDocument, + signers: signers, + submitter: submitter, + id: serviceId, + }) + + const result = await transactionHandler.submit() + // Check if the result is rejected or confirmed + if (result.asRejected) { + throw new Error(`Service removal failed: ${result.asRejected.error}`) + } + if (result.asConfirmed) { + console.log('Service removed successfully') + } +} diff --git a/basics/test.ts b/basics/test.ts index 71047d8..0b25d97 100644 --- a/basics/test.ts +++ b/basics/test.ts @@ -6,6 +6,10 @@ import { Balances, KiltAddress, SignerInterface } from '@kiltprotocol/types' import { issueCredential } from './issueCredential.ts' import { claimW3N } from './claimW3N.ts' import { releaseW3N } from './releaseW3N.ts' +import { + addServiceEndpoints, + removeServiceEndpoints, +} from './serviceEndpoints.ts' async function runAll(): Promise { let api = await Kilt.connect('wss://peregrine.kilt.io/') @@ -50,7 +54,12 @@ async function runAll(): Promise { ) console.log('Credential', credential) - + await addServiceEndpoints(holderDid.didDocument, holderDid.signers, submitter) + await removeServiceEndpoints( + holderDid.didDocument, + holderDid.signers, + submitter + ) await api.disconnect() console.log('disconnected') } From 9a1be0fdc05f102f64f27fa435847849376ee2ca Mon Sep 17 00:00:00 2001 From: Skedley <48058984+Dudleyneedham@users.noreply.github.com> Date: Mon, 5 May 2025 10:00:13 +0200 Subject: [PATCH 2/2] Apply suggestions from code review Co-authored-by: Raphael Flechtner <39338561+rflechtner@users.noreply.github.com> --- basics/serviceEndpoints.ts | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/basics/serviceEndpoints.ts b/basics/serviceEndpoints.ts index 877c674..ef7accf 100644 --- a/basics/serviceEndpoints.ts +++ b/basics/serviceEndpoints.ts @@ -13,22 +13,20 @@ export async function addServiceEndpoints( const transactionHandler = DidHelpers.addService({ api, didDocument, - signers: signers, - submitter: submitter, + signers, + submitter, service: { id: serviceId, type: ['example-type'], serviceEndpoint: ['https://example.com/endpoint'], }, - }) - - const result = await transactionHandler.submit() + }).submit() // Check if the result is rejected or confirmed - if (result.asRejected) { + if (result.isRejected) { throw new Error(`Service added failed: ${result.asRejected.error}`) } - if (result.asConfirmed) { + if (result.isConfirmed) { console.log('Service added successfully') } } @@ -46,9 +44,7 @@ export async function removeServiceEndpoints( signers: signers, submitter: submitter, id: serviceId, - }) - - const result = await transactionHandler.submit() + }).submit() // Check if the result is rejected or confirmed if (result.asRejected) { throw new Error(`Service removal failed: ${result.asRejected.error}`)