@@ -401,96 +401,67 @@ func UpdateResource(ctx context.Context, c *api.Client, resourceID, name, userna
401401 return fmt .Errorf ("Get Resource metadata: %w" , err )
402402 }
403403
404+ var metadataMap map [string ]any
405+ err = json .Unmarshal ([]byte (orgMetadata ), & metadataMap )
406+ if err != nil {
407+ return fmt .Errorf ("Marshalling metadata: %w" , err )
408+ }
409+
404410 var newMetadata []byte
405411 switch rType .Slug {
406412 case "v5-default" :
407- var metadataObj api.ResourceMetadataTypeV5DefaultWithTOTP
408- err = json .Unmarshal ([]byte (orgMetadata ), & metadataObj )
409- if err != nil {
410- return fmt .Errorf ("Marshalling metadata: %w" , err )
411- }
412-
413413 // Modify Metadata
414414 if name != "" {
415- metadataObj . Name = name
415+ metadataMap [ "name" ] = name
416416 }
417417 if username != "" {
418- metadataObj . Username = username
418+ metadataMap [ "username" ] = username
419419 }
420420 if uri != "" {
421- metadataObj .URIs = []string {uri }
422- }
423- newMetadata , err = json .Marshal (& metadataObj )
424- if err != nil {
425- return fmt .Errorf ("Marshalling metadata: %w" , err )
421+ metadataMap ["uris" ] = []string {uri }
426422 }
427423 case "v5-password-string" :
428- var metadataObj api.ResourceMetadataTypeV5DefaultWithTOTP
429- err = json .Unmarshal ([]byte (orgMetadata ), & metadataObj )
430- if err != nil {
431- return fmt .Errorf ("Marshalling metadata: %w" , err )
432- }
433-
434424 // Modify Metadata
435425 if name != "" {
436- metadataObj . Name = name
426+ metadataMap [ "name" ] = name
437427 }
438428 if username != "" {
439- metadataObj . Username = username
429+ metadataMap [ "username" ] = username
440430 }
441431 if uri != "" {
442- metadataObj . URIs = []string {uri }
432+ metadataMap [ "uris" ] = []string {uri }
443433 }
444434 if description != "" {
445- metadataObj .Description = description
446- }
447- newMetadata , err = json .Marshal (& metadataObj )
448- if err != nil {
449- return fmt .Errorf ("Marshalling metadata: %w" , err )
435+ metadataMap ["description" ] = description
450436 }
451437 case "v5-default-with-totp" :
452- var metadataObj api.ResourceMetadataTypeV5DefaultWithTOTP
453- err = json .Unmarshal ([]byte (orgMetadata ), & metadataObj )
454- if err != nil {
455- return fmt .Errorf ("Marshalling metadata: %w" , err )
456- }
457-
458438 // Modify Metadata
459439 if name != "" {
460- metadataObj . Name = name
440+ metadataMap [ "name" ] = name
461441 }
462442 if username != "" {
463- metadataObj . Username = username
443+ metadataMap [ "username" ] = username
464444 }
465445 if uri != "" {
466- metadataObj .URIs = []string {uri }
467- }
468- newMetadata , err = json .Marshal (& metadataObj )
469- if err != nil {
470- return fmt .Errorf ("Marshalling metadata: %w" , err )
446+ metadataMap ["uris" ] = []string {uri }
471447 }
472448 case "v5-totp-standalone" :
473- var metadataObj api.ResourceMetadataTypeV5TOTPStandalone
474- err = json .Unmarshal ([]byte (orgMetadata ), & metadataObj )
475- if err != nil {
476- return fmt .Errorf ("Marshalling metadata: %w" , err )
477- }
478-
479449 // Modify Metadata
480450 if name != "" {
481- metadataObj . Name = name
451+ metadataMap [ "name" ] = name
482452 }
483453 if uri != "" {
484- metadataObj .URIs = []string {uri }
485- }
486- newMetadata , err = json .Marshal (& metadataObj )
487- if err != nil {
488- return fmt .Errorf ("Marshalling metadata: %w" , err )
454+ metadataMap ["uris" ] = []string {uri }
489455 }
490456 default :
491457 return fmt .Errorf ("Unknown ResourceType: %v" , rType .Slug )
492458 }
493459
460+ newMetadata , err = json .Marshal (& metadataMap )
461+ if err != nil {
462+ return fmt .Errorf ("Marshalling metadata: %w" , err )
463+ }
464+
494465 // Validate Metadata
495466 err = validateMetadata (rType , string (newMetadata ))
496467 if err != nil {
0 commit comments