Skip to content

Commit 2c43924

Browse files
authored
Merge pull request #84 from JustaName-id/staging
Staging
2 parents 7d062f0 + fc224ef commit 2c43924

31 files changed

+1666
-1496
lines changed

apps/vc-api/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
FROM node:18.18.0-alpine as deps
33
WORKDIR /usr/src/app
44
COPY dist/apps/vc-api/package.json dist/apps/vc-api/yarn.lock ./
5-
RUN apk add --no-cache --virtual .build-deps python3 make g++ && \
5+
RUN apk add --no-cache --virtual .build-deps python3 make g++ git && \
66
echo "@community http://dl-cdn.alpinelinux.org/alpine/v3.18/community" >> /etc/apk/repositories && \
77
yarn install --production && \
88
apk del .build-deps

apps/vc-api/package.json

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,13 @@
66
"node": ">=18.12.0 <=18.18.0"
77
},
88
"dependencies": {
9-
"@nestjs/axios": "^3.0.3",
10-
"@nestjs/common": "^10.0.2",
11-
"@nestjs/config": "^3.2.3",
12-
"@nestjs/core": "^10.0.2",
13-
"@nestjs/platform-express": "^10.0.2",
149
"@nx/webpack": "19.7.2",
1510
"@veramo/core": "^6.0.0",
1611
"@veramo/credential-eip712": "^6.0.0",
1712
"class-transformer": "^0.5.1",
1813
"class-validator": "^0.14.1",
1914
"did-resolver": "4.1.0",
20-
"ethers": "^6.13.2",
2115
"ethr-did-resolver": "^10.1.10",
22-
"express": "4.21.1",
2316
"moment": "^2.30.1",
2417
"@nestjs/swagger": "^7.4.0",
2518
"@veramo/did-manager": "^6.0.0",
@@ -32,15 +25,22 @@
3225
"@nestjs/jwt": "^10.2.0",
3326
"uuid": "^10.0.0",
3427
"rxjs": "^7.8.0",
35-
"@react-email/components": "0.0.15",
3628
"react": "18.3.1",
3729
"resend": "^4.0.0",
3830
"react-dom": "18.3.1",
39-
"@nestjs/testing": "^10.0.2",
4031
"@golevelup/ts-jest": "^0.5.6",
4132
"supertest": "^7.0.0",
42-
"@justaname.id/sdk": "0.2.105",
43-
"@ensdomains/ensjs": "^4.0.0",
44-
"viem": "^2.21.7"
33+
"@nestjs/common": "^10.0.2",
34+
"express": "4.21.1",
35+
"@nestjs/core": "^10.0.2",
36+
"ethers": "^6.13.2",
37+
"@nestjs/axios": "^3.0.3",
38+
"@nestjs/config": "^3.2.3",
39+
"@react-email/components": "0.0.15",
40+
"@ensdomains/ensjs": "4.0.0",
41+
"viem": "^2.21.7",
42+
"@nestjs/platform-express": "^10.0.2",
43+
"@nestjs/testing": "^10.0.2",
44+
"@justaname.id/sdk": "^0.2.146"
4545
}
4646
}

apps/vc-api/src/api/auth/auth.controller.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ export class AuthController {
5757
}catch (e) {
5858
res.status(422).send({message: e.message});
5959
}
60-
6160
}
6261

6362
@UseGuards(JwtGuard)

apps/vc-api/src/api/filters/vc.api.filters.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { SocialResolverNotFoundExceptionFilter } from './credentials/social-reso
55
import { CredentialsExceptionFilter } from './credentials/credentials.filter';
66
import { AuthenticationExceptionFilter } from './auth/authentication.filter';
77
import { JustaNameInitializerExceptionFilter } from './auth/justaName-intializer.filter';
8+
import { Web3ProviderExceptionFilter } from './web3-provider/web3-provider.filter';
89

910
export const VCManagementApiFilters = [
1011
OTPExceptionFilter,
@@ -14,4 +15,5 @@ export const VCManagementApiFilters = [
1415
ChainIdInvalidExceptionFilter,
1516
CredentialsExceptionFilter,
1617
SocialResolverNotFoundExceptionFilter,
18+
Web3ProviderExceptionFilter,
1719
];
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { ArgumentsHost, Catch, HttpStatus } from '@nestjs/common';
2+
import { BaseExceptionFilter } from '@nestjs/core';
3+
import { Web3ProviderException } from '../../../core/domain/exceptions/Web3Provider.exception';
4+
5+
@Catch(Web3ProviderException)
6+
export class Web3ProviderExceptionFilter extends BaseExceptionFilter {
7+
catch(exception: Web3ProviderException, host: ArgumentsHost) {
8+
const context = host.switchToHttp();
9+
const response = context.getResponse();
10+
const httpStatus = HttpStatus.BAD_REQUEST;
11+
12+
response.status(httpStatus).json({
13+
message: exception.message,
14+
});
15+
}
16+
}

apps/vc-api/src/api/verify-records/mapper/iverify-records.controller.mapper.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export interface IVerifyRecordsControllerMapper {
1010
verifyRecordsApiRequest: VerifyRecordsApiRequest,
1111
): VerifyRecordsRequest;
1212

13-
mapVerifyRecordsResponseToVerifyRecordsApiResponse(
14-
verifyRecordsResponse: VerifyRecordsResponse
15-
): VerifyRecordsApiResponse;
13+
mapVerifyRecordsResponsesToVerifyRecordsApiResponses(
14+
verifyRecordsResponses: VerifyRecordsResponse[]
15+
): VerifyRecordsApiResponse[];
1616
}

apps/vc-api/src/api/verify-records/mapper/verify-records.controller.mapper.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,20 @@ export class VerifyRecordsControllerMapper implements IVerifyRecordsControllerMa
1313
verifyRecordsApiRequest: VerifyRecordsApiRequest,
1414
): VerifyRecordsRequest {
1515
return {
16+
providerUrl: verifyRecordsApiRequest.providerUrl,
1617
ens: verifyRecordsApiRequest.ens,
17-
chainId: verifyRecordsApiRequest.chainId,
1818
credentials: verifyRecordsApiRequest.credentials,
1919
issuer: verifyRecordsApiRequest.issuer,
2020
matchStandard: verifyRecordsApiRequest.matchStandard
2121
};
2222
}
2323

24-
mapVerifyRecordsResponseToVerifyRecordsApiResponse(verifyRecordsResponses: VerifyRecordsResponse): VerifyRecordsApiResponse {
25-
return {
26-
records: {
27-
...verifyRecordsResponses
28-
}
29-
};
24+
mapVerifyRecordsResponsesToVerifyRecordsApiResponses(verifyRecordsResponses: VerifyRecordsResponse[]): VerifyRecordsApiResponse[] {
25+
return verifyRecordsResponses.map((response) => {
26+
return {
27+
ens: response.subname,
28+
credentials: response.records
29+
};
30+
});
3031
}
3132
}

apps/vc-api/src/api/verify-records/requests/verify-records.api.request.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
1-
import { IsArray, IsInt, IsOptional, IsString } from 'class-validator';
1+
import { IsArray, IsOptional, IsString } from 'class-validator';
22
import { ApiProperty } from '@nestjs/swagger';
3-
import { Transform, Type } from 'class-transformer';
4-
import {ChainId} from "@justaname.id/sdk";
5-
import {Credentials} from "../../../core/domain/entities/credentials";
3+
import { Transform } from 'class-transformer';
4+
import { Credentials } from '../../../core/domain/entities/credentials';
65

76
export class VerifyRecordsApiRequest {
87
@ApiProperty()
98
@IsString()
10-
ens: string;
9+
providerUrl: string;
1110

1211
@ApiProperty()
13-
@Type(() => Number)
14-
@IsInt()
15-
chainId: ChainId;
12+
@IsArray()
13+
@IsString({ each: true })
14+
@Transform(({ value }) => (Array.isArray(value) ? value : [value]))
15+
ens: string[];
1616

1717
@ApiProperty()
1818
@IsArray()
19+
@IsString({ each: true })
20+
@Transform(({ value }) => (Array.isArray(value) ? value : [value]))
1921
credentials: Credentials[];
2022

2123
@ApiProperty()

apps/vc-api/src/api/verify-records/responses/verify-records.api.response.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
import { ApiProperty } from '@nestjs/swagger';
22

33
export class VerifyRecordsApiResponse {
4+
@ApiProperty({
5+
type: 'string',
6+
example: 'subname.domain.eth'
7+
})
8+
ens: string;
9+
10+
411
@ApiProperty({
512
type: 'object',
613
additionalProperties: {
@@ -11,5 +18,5 @@ export class VerifyRecordsApiResponse {
1118
record2: false
1219
}
1320
})
14-
records: { [key: string]: boolean };
21+
credentials: { [key: string]: boolean };
1522
}
Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,36 @@
1-
import { Controller, Get, Inject, Param, Query } from '@nestjs/common';
1+
import { Controller, Get, Inject, Query } from '@nestjs/common';
2+
import { VerifyRecordsApiRequest } from './requests/verify-records.api.request';
3+
import { VerifyRecordsApiResponse } from './responses/verify-records.api.response';
24
import {
35
IVerifyRecordsService,
4-
VERIFY_RECORDS_SERVICE
6+
VERIFY_RECORDS_SERVICE,
57
} from '../../core/applications/verify-records/iverify-records.service';
6-
import { VerifyRecordsApiRequest } from './requests/verify-records.api.request';
7-
import { IVerifyRecordsControllerMapper } from './mapper/iverify-records.controller.mapper';
8-
import {VerifyRecordsApiResponse} from "./responses/verify-records.api.response";
8+
import {
9+
IVerifyRecordsControllerMapper,
10+
VERIFY_RECORDS_CONTROLLER_MAPPER,
11+
} from './mapper/iverify-records.controller.mapper';
912

1013
@Controller('verify-records')
1114
export class VerifyRecordsController {
12-
1315
constructor(
14-
@Inject(VERIFY_RECORDS_SERVICE) private readonly verifyRecordsService: IVerifyRecordsService,
15-
@Inject('VERIFY_RECORDS_CONTROLLER_MAPPER') private readonly verifyRecordsControllerMapper: IVerifyRecordsControllerMapper
16+
@Inject(VERIFY_RECORDS_SERVICE)
17+
private readonly verifyRecordsService: IVerifyRecordsService,
18+
@Inject(VERIFY_RECORDS_CONTROLLER_MAPPER)
19+
private readonly verifyRecordsControllerMapper: IVerifyRecordsControllerMapper
1620
) {}
21+
1722
@Get('')
1823
async verifyRecords(
1924
@Query() query: VerifyRecordsApiRequest
20-
): Promise<VerifyRecordsApiResponse> {
25+
): Promise<VerifyRecordsApiResponse[]> {
2126
const response = await this.verifyRecordsService.verifyRecords(
2227
this.verifyRecordsControllerMapper.mapVerifyRecordsApiRequestToVerifyRecordsRequest(
2328
query
2429
)
2530
);
2631

27-
return this.verifyRecordsControllerMapper.mapVerifyRecordsResponseToVerifyRecordsApiResponse(response);
32+
return this.verifyRecordsControllerMapper.mapVerifyRecordsResponsesToVerifyRecordsApiResponses(
33+
response
34+
);
2835
}
2936
}

0 commit comments

Comments
 (0)