Add DTO validation for FederationCapabilities to ensure proper structure. - Create FederationCapabilitiesDto with class-validator decorators - Validate boolean types for capability flags - Validate string type for protocolVersion - Update IncomingConnectionRequestDto to use validated DTO - Add comprehensive unit tests for DTO validation Fixes #295 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
72 lines
1.3 KiB
TypeScript
72 lines
1.3 KiB
TypeScript
/**
|
|
* Connection DTOs
|
|
*
|
|
* Data Transfer Objects for federation connection API.
|
|
*/
|
|
|
|
import { IsString, IsUrl, IsOptional, IsObject, IsNumber, ValidateNested } from "class-validator";
|
|
import { Type } from "class-transformer";
|
|
import { Sanitize, SanitizeObject } from "../../common/decorators/sanitize.decorator";
|
|
import { FederationCapabilitiesDto } from "./capabilities.dto";
|
|
|
|
/**
|
|
* DTO for initiating a connection
|
|
*/
|
|
export class InitiateConnectionDto {
|
|
@IsUrl()
|
|
remoteUrl!: string;
|
|
}
|
|
|
|
/**
|
|
* DTO for accepting a connection
|
|
*/
|
|
export class AcceptConnectionDto {
|
|
@IsOptional()
|
|
@IsObject()
|
|
@SanitizeObject()
|
|
metadata?: Record<string, unknown>;
|
|
}
|
|
|
|
/**
|
|
* DTO for rejecting a connection
|
|
*/
|
|
export class RejectConnectionDto {
|
|
@IsString()
|
|
@Sanitize()
|
|
reason!: string;
|
|
}
|
|
|
|
/**
|
|
* DTO for disconnecting a connection
|
|
*/
|
|
export class DisconnectConnectionDto {
|
|
@IsOptional()
|
|
@IsString()
|
|
@Sanitize()
|
|
reason?: string;
|
|
}
|
|
|
|
/**
|
|
* DTO for incoming connection request (from remote instance)
|
|
*/
|
|
export class IncomingConnectionRequestDto {
|
|
@IsString()
|
|
instanceId!: string;
|
|
|
|
@IsUrl()
|
|
instanceUrl!: string;
|
|
|
|
@IsString()
|
|
publicKey!: string;
|
|
|
|
@ValidateNested()
|
|
@Type(() => FederationCapabilitiesDto)
|
|
capabilities!: FederationCapabilitiesDto;
|
|
|
|
@IsNumber()
|
|
timestamp!: number;
|
|
|
|
@IsString()
|
|
signature!: string;
|
|
}
|