Skip to content

Commit ddd910a

Browse files
committed
Preserve Additional Metadata
1 parent 9c47dbb commit ddd910a

File tree

1 file changed

+23
-52
lines changed

1 file changed

+23
-52
lines changed

helper/resources.go

Lines changed: 23 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)