@@ -116,57 +116,67 @@ export class MetadataController extends Controller {
116116 @Body ( ) requestBody : StoreMetadataWithAllowlistRequest ,
117117 ) : Promise < StorageResponse > {
118118 const storage = await StorageService . init ( ) ;
119- const metadataValidationResult = validateMetadataAndClaimdata (
120- requestBody . metadata ,
121- ) ;
119+ const { metadata } = requestBody ;
120+ const { allowList, totalUnits } = requestBody ;
122121
123- if ( ! metadataValidationResult . valid ) {
124- this . setStatus ( 422 ) ;
125- return {
126- success : false ,
127- message : "Validation failed" ,
128- errors : metadataValidationResult . errors ,
129- } ;
130- }
122+ try {
123+ const metadataValidationResult = validateMetadataAndClaimdata ( metadata ) ;
131124
132- if ( requestBody . metadata . allowList ) {
133- this . setStatus ( 409 ) ;
134- return {
135- success : false ,
136- message : "Allow list detected in metadata" ,
137- errors : { metadata : "Allowlist URI already present in metadata." } ,
138- } ;
139- }
125+ if ( ! metadataValidationResult . valid ) {
126+ this . setStatus ( 422 ) ;
127+ return {
128+ success : false ,
129+ message : "Validation failed" ,
130+ errors : metadataValidationResult . errors ,
131+ } ;
132+ }
133+
134+ if ( allowList ) {
135+ this . setStatus ( 409 ) ;
136+ return {
137+ success : false ,
138+ message : "Allow list detected in metadata" ,
139+ errors : { metadata : "Allowlist URI already present in metadata." } ,
140+ } ;
141+ }
142+
143+ const allowlistValidationResult = parseAndValidateMerkleTree ( {
144+ allowList,
145+ totalUnits,
146+ } ) ;
147+
148+ if ( ! allowlistValidationResult . valid ) {
149+ this . setStatus ( 422 ) ;
150+ return {
151+ success : false ,
152+ message : "Validation failed" ,
153+ errors : allowlistValidationResult . errors ,
154+ } ;
155+ }
140156
141- const allowlistValidationResult = parseAndValidateMerkleTree ( {
142- allowList : requestBody . allowList ,
143- totalUnits : requestBody ?. totalUnits ,
144- } ) ;
157+ const uploadResult = await storage . uploadFile ( {
158+ file : jsonToBlob ( requestBody . allowList ) ,
159+ } ) ;
160+ const cid = await storage . uploadFile ( {
161+ file : jsonToBlob ( {
162+ ...metadataValidationResult . data ,
163+ allowList : `ipfs://${ uploadResult . cid } ` ,
164+ } ) ,
165+ } ) ;
145166
146- if ( ! allowlistValidationResult . valid ) {
167+ this . setStatus ( 201 ) ;
168+ return {
169+ success : true ,
170+ data : cid ,
171+ } ;
172+ } catch ( e ) {
147173 this . setStatus ( 422 ) ;
148174 return {
149175 success : false ,
150- message : "Validation failed " ,
151- errors : allowlistValidationResult . errors ,
176+ message : "Error while storing metadata " ,
177+ errors : { metadata : ( e as Error ) . message } ,
152178 } ;
153179 }
154-
155- const uploadResult = await storage . uploadFile ( {
156- file : jsonToBlob ( requestBody . allowList ) ,
157- } ) ;
158- const cid = await storage . uploadFile ( {
159- file : jsonToBlob ( {
160- ...metadataValidationResult . data ,
161- allowList : `ipfs://${ uploadResult . cid } ` ,
162- } ) ,
163- } ) ;
164-
165- this . setStatus ( 201 ) ;
166- return {
167- success : true ,
168- data : cid ,
169- } ;
170180 }
171181
172182 /**
@@ -185,39 +195,53 @@ export class MetadataController extends Controller {
185195 public async validateMetadata (
186196 @Body ( ) requestBody : ValidateMetadataRequest ,
187197 ) : Promise < ValidationResponse > {
188- const metadataValidationResult = validateMetadataAndClaimdata (
189- requestBody . metadata ,
190- ) ;
191-
192- if ( ! metadataValidationResult . valid ) {
193- this . setStatus ( 422 ) ;
194- return {
195- success : false ,
196- message : "Errors while validating metadata or allow list" ,
197- errors : metadataValidationResult . errors ,
198- } ;
199- }
198+ const { metadata } = requestBody ;
200199
201- if ( requestBody . metadata . allowList ) {
202- const allowListValidationResult = await validateRemoteAllowList (
203- requestBody . metadata . allowList ,
204- ) ;
200+ try {
201+ const metadataValidationResult = validateMetadataAndClaimdata ( metadata ) ;
205202
206- if ( ! allowListValidationResult . valid ) {
203+ if ( ! metadataValidationResult . valid ) {
207204 this . setStatus ( 422 ) ;
208205 return {
209- success : false ,
210- message : "Errors while validating allow list reference in metadata" ,
211- errors : allowListValidationResult . errors ,
206+ success : true ,
207+ valid : false ,
208+ message : "Errors while validating metadata" ,
209+ errors : metadataValidationResult . errors ,
212210 } ;
213211 }
214- }
215212
216- this . setStatus ( 200 ) ;
217- return {
218- success : true ,
219- message : "Validation successful" ,
220- } ;
213+ if ( metadata . allowList ) {
214+ const allowListValidationResult = await validateRemoteAllowList (
215+ metadata . allowList ,
216+ ) ;
217+
218+ if ( ! allowListValidationResult . valid ) {
219+ this . setStatus ( 422 ) ;
220+ return {
221+ success : true ,
222+ valid : false ,
223+ message :
224+ "Errors while validating allow list referenced in metadata" ,
225+ errors : allowListValidationResult . errors ,
226+ } ;
227+ }
228+ }
229+
230+ this . setStatus ( 200 ) ;
231+ return {
232+ success : true ,
233+ valid : true ,
234+ message : "Metadata is valid hypercert metadata" ,
235+ } ;
236+ } catch ( e ) {
237+ this . setStatus ( 422 ) ;
238+ return {
239+ success : false ,
240+ valid : false ,
241+ message : "Error while validating metadata" ,
242+ errors : { metadata : ( e as Error ) . message } ,
243+ } ;
244+ }
221245 }
222246
223247 /**
@@ -236,37 +260,50 @@ export class MetadataController extends Controller {
236260 public async validateMetadataWithAllowlist (
237261 @Body ( ) requestBody : StoreMetadataWithAllowlistRequest ,
238262 ) : Promise < ValidationResponse > {
239- const metadataValidationResult = validateMetadataAndClaimdata (
240- requestBody . metadata ,
241- ) ;
263+ const { metadata, allowList, totalUnits } = requestBody ;
242264
243- if ( ! metadataValidationResult . valid ) {
244- this . setStatus ( 422 ) ;
245- return {
246- success : false ,
247- message : "Validation failed" ,
248- errors : metadataValidationResult . errors ,
249- } ;
250- }
265+ try {
266+ const metadataValidationResult = validateMetadataAndClaimdata ( metadata ) ;
267+
268+ if ( ! metadataValidationResult . valid ) {
269+ this . setStatus ( 422 ) ;
270+ return {
271+ success : true ,
272+ valid : false ,
273+ message : "Validation failed" ,
274+ errors : metadataValidationResult . errors ,
275+ } ;
276+ }
277+
278+ const allowlistValidationResult = parseAndValidateMerkleTree ( {
279+ allowList,
280+ totalUnits,
281+ } ) ;
251282
252- const allowlistValidationResult = parseAndValidateMerkleTree ( {
253- allowList : requestBody . allowList ,
254- totalUnits : requestBody ?. totalUnits ,
255- } ) ;
283+ if ( ! allowlistValidationResult . valid ) {
284+ this . setStatus ( 422 ) ;
285+ return {
286+ success : true ,
287+ valid : false ,
288+ message : "Validation failed" ,
289+ errors : allowlistValidationResult . errors ,
290+ } ;
291+ }
256292
257- if ( ! allowlistValidationResult . valid ) {
293+ this . setStatus ( 200 ) ;
294+ return {
295+ success : true ,
296+ valid : true ,
297+ message : "Metadata is valid hypercert metadata" ,
298+ } ;
299+ } catch ( e ) {
258300 this . setStatus ( 422 ) ;
259301 return {
260302 success : false ,
261- message : "Validation failed" ,
262- errors : allowlistValidationResult . errors ,
303+ valid : false ,
304+ message : "Error while validating metadata" ,
305+ errors : { metadata : ( e as Error ) . message } ,
263306 } ;
264307 }
265-
266- this . setStatus ( 200 ) ;
267- return {
268- success : true ,
269- message : "Validation successful" ,
270- } ;
271308 }
272309}
0 commit comments