From 8ade62951a19f17659abf7afc46bfb04bcb25686 Mon Sep 17 00:00:00 2001 From: Konstantin Tsabolov <konstantin.tsabolov@spherity.com> Date: Tue, 20 Feb 2024 10:03:32 +0100 Subject: [PATCH] fix(did-manager): fix did registration dto --- apps/did-manager/src/dids/dids.service.ts | 11 ++++-- .../src/dids/dto/register-from-seed.dto.ts | 34 +++++++++++++++---- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/apps/did-manager/src/dids/dids.service.ts b/apps/did-manager/src/dids/dids.service.ts index 927325e..80936bd 100644 --- a/apps/did-manager/src/dids/dids.service.ts +++ b/apps/did-manager/src/dids/dids.service.ts @@ -33,13 +33,20 @@ export class DIDsService { public registerFromSeed( tenantId: string, seed: EventDidsRegisterIndyFromSeedInput['seed'], - services?: EventDidsRegisterIndyFromSeedInput['services'], + services?: Array<{ id: string; type: string; serviceEndpoint: string }>, ) { + const mappedServices: EventDidsRegisterIndyFromSeedInput['services'] = + services?.map(({ id, type, serviceEndpoint }) => ({ + identifier: id, + type, + url: serviceEndpoint, + })); + return this.natsClient .send< EventDidsRegisterIndyFromSeed, EventDidsRegisterIndyFromSeedInput - >(EventDidsRegisterIndyFromSeed.token, { tenantId, seed, services }) + >(EventDidsRegisterIndyFromSeed.token, { tenantId, seed, services: mappedServices }) .pipe(map(({ data }) => data)); } diff --git a/apps/did-manager/src/dids/dto/register-from-seed.dto.ts b/apps/did-manager/src/dids/dto/register-from-seed.dto.ts index 2c60262..9d5effe 100644 --- a/apps/did-manager/src/dids/dto/register-from-seed.dto.ts +++ b/apps/did-manager/src/dids/dto/register-from-seed.dto.ts @@ -1,5 +1,29 @@ import { ApiProperty } from '@nestjs/swagger'; -import { IsString, IsArray, IsOptional } from 'class-validator'; +import { Type } from 'class-transformer'; +import { IsArray, IsOptional, IsString, ValidateNested } from 'class-validator'; + +class Service { + @IsString() + @ApiProperty({ + description: 'Service identifier', + example: 'did:example:123#linked-domain', + }) + public id: string; + + @IsString() + @ApiProperty({ + description: 'Service Type', + example: 'LinkedDomains', + }) + public type: string; + + @IsString() + @ApiProperty({ + description: 'Service Endpoint', + example: 'https://bar.example.com', + }) + public serviceEndpoint: string; +} export class RegisterFromSeedPayload { @IsString() @@ -10,6 +34,8 @@ export class RegisterFromSeedPayload { public seed: string; @IsArray() + @ValidateNested() + @Type(() => Service) @IsOptional() @ApiProperty({ description: 'Services to associate with DID', @@ -21,9 +47,5 @@ export class RegisterFromSeedPayload { }, ], }) - public services?: Array<{ - identifier: string; - url: string; - type: string; - }>; + public services?: Service[]; } -- GitLab