11import { jsonToBlob } from "../utils/jsonToBlob.js" ;
2- import { Body , Controller , Post , Response , Route , SuccessResponse , Tags } from "tsoa" ;
2+ import {
3+ Body ,
4+ Controller ,
5+ Post ,
6+ Response ,
7+ Route ,
8+ SuccessResponse ,
9+ Tags ,
10+ } from "tsoa" ;
311import { StorageService } from "../services/StorageService.js" ;
412import type {
5- ApiResponse , StorageResponse ,
13+ ApiResponse ,
14+ StorageResponse ,
615 StoreMetadataRequest ,
7- StoreMetadataWithAllowlistRequest , ValidateMetadataRequest , ValidationResponse
16+ StoreMetadataWithAllowlistRequest ,
17+ ValidateMetadataRequest ,
18+ ValidationResponse ,
819} from "../types/api.js" ;
920import { validateMetadataAndClaimdata } from "../utils/validateMetadataAndClaimdata.js" ;
1021import { validateRemoteAllowList } from "../utils/validateRemoteAllowList.js" ;
@@ -13,7 +24,6 @@ import { parseAndValidateMerkleTree } from "../utils/parseAndValidateMerkleTreeD
1324@Route ( "v1/metadata" )
1425@Tags ( "Metadata" )
1526export class MetadataController extends Controller {
16-
1727 /**
1828 * Submits a new hypercert metadata object for validation and storage on IPFS.
1929 * When an allowlist URI is provided the service will validate the allowlist data before storing the metadata.
@@ -28,39 +38,47 @@ export class MetadataController extends Controller {
2838 @Response < ApiResponse > ( 422 , "Unprocessable content" , {
2939 success : false ,
3040 message : "Validation failed" ,
31- errors : { metadata : "Invalid metadata." }
41+ errors : { metadata : "Invalid metadata." } ,
3242 } )
33- public async storeMetadata ( @Body ( ) requestBody : StoreMetadataRequest ) : Promise < StorageResponse > {
43+ public async storeMetadata (
44+ @Body ( ) requestBody : StoreMetadataRequest ,
45+ ) : Promise < StorageResponse > {
3446 const storage = await StorageService . init ( ) ;
35- const metadataValidationResult = validateMetadataAndClaimdata ( requestBody . metadata ) ;
47+ const metadataValidationResult = validateMetadataAndClaimdata (
48+ requestBody . metadata ,
49+ ) ;
3650
3751 if ( ! metadataValidationResult . valid ) {
3852 this . setStatus ( 422 ) ;
3953 return {
4054 success : false ,
4155 message : "Validation failed" ,
42- errors : metadataValidationResult . errors
56+ errors : metadataValidationResult . errors ,
4357 } ;
4458 }
4559
4660 if ( requestBody . metadata . allowList ) {
47- const allowListValidationResult = await validateRemoteAllowList ( requestBody . metadata . allowList ) ;
61+ const allowListValidationResult = await validateRemoteAllowList (
62+ requestBody . metadata . allowList ,
63+ ) ;
4864
4965 if ( ! allowListValidationResult . valid ) {
5066 this . setStatus ( 422 ) ;
5167 return {
5268 success : false ,
5369 message : "Errors while validating allow list" ,
54- errors : allowListValidationResult . errors
70+ errors : allowListValidationResult . errors ,
5571 } ;
5672 }
5773 }
5874
59- const cid = await storage . uploadFile ( { file : jsonToBlob ( metadataValidationResult . data ) } ) ;
75+ const cid = await storage . uploadFile ( {
76+ file : jsonToBlob ( metadataValidationResult . data ) ,
77+ } ) ;
6078 this . setStatus ( 201 ) ;
6179 return {
6280 success : true ,
63- data : cid
81+ data : cid ,
6482 } ;
6583 }
6684
@@ -78,23 +96,27 @@ export class MetadataController extends Controller {
7896 @Response < ApiResponse > ( 409 , "Conflict" , {
7997 success : false ,
8098 message : "Allow list detected in metadata" ,
81- errors : { metadata : "Allowlist URI already present in metadata." }
99+ errors : { metadata : "Allowlist URI already present in metadata." } ,
82100 } )
83101 @Response < ApiResponse > ( 422 , "Unprocessable content" , {
84102 success : false ,
85103 message : "Validation failed" ,
86- errors : { metadata : "Invalid metadata." }
104+ errors : { metadata : "Invalid metadata." } ,
87105 } )
88- public async storeMetadataWithAllowlist ( @Body ( ) requestBody : StoreMetadataWithAllowlistRequest ) : Promise < StorageResponse > {
106+ public async storeMetadataWithAllowlist (
107+ @Body ( ) requestBody : StoreMetadataWithAllowlistRequest ,
108+ ) : Promise < StorageResponse > {
89109 const storage = await StorageService . init ( ) ;
90- const metadataValidationResult = validateMetadataAndClaimdata ( requestBody . metadata ) ;
110+ const metadataValidationResult = validateMetadataAndClaimdata (
111+ requestBody . metadata ,
112+ ) ;
91113
92114 if ( ! metadataValidationResult . valid ) {
93115 this . setStatus ( 422 ) ;
94116 return {
95117 success : false ,
96118 message : "Validation failed" ,
97- errors : metadataValidationResult . errors
119+ errors : metadataValidationResult . errors ,
98120 } ;
99121 }
100122
@@ -103,40 +125,41 @@ export class MetadataController extends Controller {
103125 return {
104126 success : false ,
105127 message : "Allow list detected in metadata" ,
106- errors : { metadata : "Allowlist URI already present in metadata." }
128+ errors : { metadata : "Allowlist URI already present in metadata." } ,
107129 } ;
108130 }
109131
110132 const allowlistValidationResult = parseAndValidateMerkleTree ( {
111133 allowList : requestBody . allowList ,
112- totalUnits : requestBody ?. totalUnits
134+ totalUnits : requestBody ?. totalUnits ,
113135 } ) ;
114136
115137 if ( ! allowlistValidationResult . valid ) {
116138 this . setStatus ( 422 ) ;
117139 return {
118140 success : false ,
119141 message : "Validation failed" ,
120- errors : allowlistValidationResult . errors
142+ errors : allowlistValidationResult . errors ,
121143 } ;
122144 }
123145
124- const allowListCid = await storage . uploadFile ( { file : jsonToBlob ( requestBody . allowList ) } ) ;
146+ const uploadResult = await storage . uploadFile ( {
147+ file : jsonToBlob ( requestBody . allowList ) ,
148+ } ) ;
125149 const cid = await storage . uploadFile ( {
126150 file : jsonToBlob ( {
127151 ...metadataValidationResult . data ,
128- allowList : `ipfs://${ allowListCid } `
129- } )
152+ allowList : `ipfs://${ uploadResult . cid } ` ,
153+ } ) ,
130154 } ) ;
131155
132156 this . setStatus ( 201 ) ;
133157 return {
134158 success : true ,
135- data : cid
159+ data : cid ,
136160 } ;
137161 }
138162
139-
140163 /**
141164 * Validates a hypercert metadata object. When an allowlist URI is provided the service will validate the allowlist data as well.
142165 *
@@ -148,37 +171,43 @@ export class MetadataController extends Controller {
148171 @Response < ApiResponse > ( 422 , "Unprocessable content" , {
149172 success : false ,
150173 message : "Validation failed" ,
151- errors : { metadata : "Invalid metadata." }
174+ errors : { metadata : "Invalid metadata." } ,
152175 } )
153- public async validateMetadata ( @Body ( ) requestBody : ValidateMetadataRequest ) : Promise < ValidationResponse > {
154- const metadataValidationResult = validateMetadataAndClaimdata ( requestBody . metadata ) ;
176+ public async validateMetadata (
177+ @Body ( ) requestBody : ValidateMetadataRequest ,
178+ ) : Promise < ValidationResponse > {
179+ const metadataValidationResult = validateMetadataAndClaimdata (
180+ requestBody . metadata ,
181+ ) ;
155182
156183 if ( ! metadataValidationResult . valid ) {
157184 this . setStatus ( 422 ) ;
158185 return {
159186 success : false ,
160187 message : "Errors while validating metadata or allow list" ,
161- errors : metadataValidationResult . errors
188+ errors : metadataValidationResult . errors ,
162189 } ;
163190 }
164191
165192 if ( requestBody . metadata . allowList ) {
166- const allowListValidationResult = await validateRemoteAllowList ( requestBody . metadata . allowList ) ;
193+ const allowListValidationResult = await validateRemoteAllowList (
194+ requestBody . metadata . allowList ,
195+ ) ;
167196
168197 if ( ! allowListValidationResult . valid ) {
169198 this . setStatus ( 422 ) ;
170199 return {
171200 success : false ,
172201 message : "Errors while validating allow list reference in metadata" ,
173- errors : allowListValidationResult . errors
202+ errors : allowListValidationResult . errors ,
174203 } ;
175204 }
176205 }
177206
178207 this . setStatus ( 200 ) ;
179208 return {
180209 success : true ,
181- message : "Validation successful"
210+ message : "Validation successful" ,
182211 } ;
183212 }
184213
@@ -193,38 +222,42 @@ export class MetadataController extends Controller {
193222 @Response < ApiResponse > ( 422 , "Unprocessable content" , {
194223 success : false ,
195224 message : "Validation failed" ,
196- errors : { metadata : "Invalid metadata." }
225+ errors : { metadata : "Invalid metadata." } ,
197226 } )
198- public async validateMetadataWithAllowlist ( @Body ( ) requestBody : StoreMetadataWithAllowlistRequest ) : Promise < ValidationResponse > {
199- const metadataValidationResult = validateMetadataAndClaimdata ( requestBody . metadata ) ;
227+ public async validateMetadataWithAllowlist (
228+ @Body ( ) requestBody : StoreMetadataWithAllowlistRequest ,
229+ ) : Promise < ValidationResponse > {
230+ const metadataValidationResult = validateMetadataAndClaimdata (
231+ requestBody . metadata ,
232+ ) ;
200233
201234 if ( ! metadataValidationResult . valid ) {
202235 this . setStatus ( 422 ) ;
203236 return {
204237 success : false ,
205238 message : "Validation failed" ,
206- errors : metadataValidationResult . errors
239+ errors : metadataValidationResult . errors ,
207240 } ;
208241 }
209242
210243 const allowlistValidationResult = parseAndValidateMerkleTree ( {
211244 allowList : requestBody . allowList ,
212- totalUnits : requestBody ?. totalUnits
245+ totalUnits : requestBody ?. totalUnits ,
213246 } ) ;
214247
215248 if ( ! allowlistValidationResult . valid ) {
216249 this . setStatus ( 422 ) ;
217250 return {
218251 success : false ,
219252 message : "Validation failed" ,
220- errors : allowlistValidationResult . errors
253+ errors : allowlistValidationResult . errors ,
221254 } ;
222255 }
223256
224257 this . setStatus ( 200 ) ;
225258 return {
226259 success : true ,
227- message : "Validation successful"
260+ message : "Validation successful" ,
228261 } ;
229262 }
230- }
263+ }
0 commit comments