@@ -342,15 +342,15 @@ pub async fn get_identity(
342
342
// call was successful but not data for alias id
343
343
return Ok ( None ) ;
344
344
} ;
345
-
345
+
346
346
let did = IotaDID :: from_alias_id ( & object_id. to_string ( ) , client. network ( ) ) ;
347
- let ( id, multi_controller, created, updated) = match unpack_identity_data ( & did, & data) ? {
348
- Some ( data) => data,
349
- None => { return Ok ( None ) ; } ,
347
+ let Some ( ( id, multi_controller, created, updated) ) = unpack_identity_data ( & did, & data) ? else {
348
+ return Ok ( None ) ;
350
349
} ;
351
350
352
- let did_doc = IotaDocument :: from_iota_document_data ( multi_controller. controlled_value ( ) , true , & did, created, updated)
353
- . map_err ( |e| Error :: DidDocParsingFailed ( e. to_string ( ) ) ) ?;
351
+ let did_doc =
352
+ IotaDocument :: from_iota_document_data ( multi_controller. controlled_value ( ) , true , & did, created, updated)
353
+ . map_err ( |e| Error :: DidDocParsingFailed ( e. to_string ( ) ) ) ?;
354
354
355
355
Ok ( Some ( OnChainIdentity {
356
356
id,
@@ -365,60 +365,58 @@ fn is_identity(value: &IotaParsedMoveObject) -> bool {
365
365
value. type_ . module . as_ident_str ( ) . as_str ( ) == MODULE && value. type_ . name . as_ident_str ( ) . as_str ( ) == NAME
366
366
}
367
367
368
-
369
368
/// Unpack identity data from given `IotaObjectData`
370
- ///
369
+ ///
371
370
/// # Errors:
372
371
/// * in case given data for DID is not an object
373
372
/// * parsing identity data from object fails
374
- pub ( crate ) fn unpack_identity_data ( did : & IotaDID , data : & IotaObjectData ) -> Result < Option :: < ( UID , Multicontroller < Vec < u8 > > , Timestamp , Timestamp ) > , Error > {
375
- let content = data
376
- . clone ( )
377
- . content
378
- . ok_or_else ( || Error :: ObjectLookup ( format ! ( "no content in retrieved object in object id {did}" ) ) ) ?;
379
- let IotaParsedData :: MoveObject ( value) = content else {
380
- return Err ( Error :: ObjectLookup ( format ! (
381
- "given data for DID {did} is not an object"
382
- ) ) ) ;
383
- } ;
384
- if !is_identity ( & value) {
385
- return Ok ( None ) ;
386
- }
387
-
388
- #[ derive( Deserialize ) ]
389
- struct TempOnChainIdentity {
390
- id : UID ,
391
- did_doc : Multicontroller < Vec < u8 > > ,
392
- created : Number < u64 > ,
393
- updated : Number < u64 > ,
394
- }
395
-
396
- let TempOnChainIdentity {
397
- id,
398
- did_doc : multi_controller,
399
- created,
400
- updated,
401
- } = serde_json:: from_value :: < TempOnChainIdentity > ( value. fields . to_json_value ( ) ) . map_err ( |err| {
402
- Error :: ObjectLookup ( format ! (
403
- "could not parse identity document with DID {did}; {err}"
404
- ) )
405
- } ) ?;
406
-
407
- // Parse DID document timestamps
408
- let created = {
409
- let timestamp_ms: u64 = created. try_into ( ) . expect ( "Move string-encoded u64 are valid u64" ) ;
410
- // `Timestamp` requires a timestamp expressed in seconds.
411
- Timestamp :: from_unix ( timestamp_ms as i64 / 1000 ) . expect ( "On-chain clock produces valid timestamps" )
412
- } ;
413
- let updated = {
414
- let timestamp_ms: u64 = updated. try_into ( ) . expect ( "Move string-encoded u64 are valid u64" ) ;
415
- // `Timestamp` requires a timestamp expressed in seconds.
416
- Timestamp :: from_unix ( timestamp_ms as i64 / 1000 ) . expect ( "On-chain clock produces valid timestamps" )
417
- } ;
373
+ pub ( crate ) fn unpack_identity_data (
374
+ did : & IotaDID ,
375
+ data : & IotaObjectData ,
376
+ ) -> Result < Option < ( UID , Multicontroller < Vec < u8 > > , Timestamp , Timestamp ) > , Error > {
377
+ let content = data
378
+ . clone ( )
379
+ . content
380
+ . ok_or_else ( || Error :: ObjectLookup ( format ! ( "no content in retrieved object in object id {did}" ) ) ) ?;
381
+ let IotaParsedData :: MoveObject ( value) = content else {
382
+ return Err ( Error :: ObjectLookup ( format ! (
383
+ "given data for DID {did} is not an object"
384
+ ) ) ) ;
385
+ } ;
386
+ if !is_identity ( & value) {
387
+ return Ok ( None ) ;
388
+ }
418
389
419
- Ok ( Some ( ( id, multi_controller, created, updated) ) )
390
+ #[ derive( Deserialize ) ]
391
+ struct TempOnChainIdentity {
392
+ id : UID ,
393
+ did_doc : Multicontroller < Vec < u8 > > ,
394
+ created : Number < u64 > ,
395
+ updated : Number < u64 > ,
420
396
}
421
397
398
+ let TempOnChainIdentity {
399
+ id,
400
+ did_doc : multi_controller,
401
+ created,
402
+ updated,
403
+ } = serde_json:: from_value :: < TempOnChainIdentity > ( value. fields . to_json_value ( ) )
404
+ . map_err ( |err| Error :: ObjectLookup ( format ! ( "could not parse identity document with DID {did}; {err}" ) ) ) ?;
405
+
406
+ // Parse DID document timestamps
407
+ let created = {
408
+ let timestamp_ms: u64 = created. try_into ( ) . expect ( "Move string-encoded u64 are valid u64" ) ;
409
+ // `Timestamp` requires a timestamp expressed in seconds.
410
+ Timestamp :: from_unix ( timestamp_ms as i64 / 1000 ) . expect ( "On-chain clock produces valid timestamps" )
411
+ } ;
412
+ let updated = {
413
+ let timestamp_ms: u64 = updated. try_into ( ) . expect ( "Move string-encoded u64 are valid u64" ) ;
414
+ // `Timestamp` requires a timestamp expressed in seconds.
415
+ Timestamp :: from_unix ( timestamp_ms as i64 / 1000 ) . expect ( "On-chain clock produces valid timestamps" )
416
+ } ;
417
+
418
+ Ok ( Some ( ( id, multi_controller, created, updated) ) )
419
+ }
422
420
423
421
/// Builder-style struct to create a new [`OnChainIdentity`].
424
422
#[ derive( Debug ) ]
0 commit comments