Skip to content

Commit ecb0c92

Browse files
feat(dir): add referrer CIDs
Signed-off-by: Bendegúz Csirmaz <csirmazbendeguz@gmail.com>
1 parent 475760b commit ecb0c92

19 files changed

Lines changed: 650 additions & 137 deletions

File tree

api/core/v1/referrer.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33

44
package v1
55

6+
import (
7+
"encoding/json"
8+
"fmt"
9+
)
10+
611
// ReferrerObject defines an interface for referrer objects that can be
712
// marshaled and unmarshaled to/from RecordReferrer format.
813
type ReferrerObject interface {
@@ -18,3 +23,27 @@ type ReferrerObject interface {
1823
// - PublicKey: "agntcy.dir.sign.v1.PublicKey"
1924
ReferrerType() string
2025
}
26+
27+
// Marshal marshals the RecordReferrer similar to how Record.Marshal marshals Record.
28+
func (r *RecordReferrer) Marshal() ([]byte, error) {
29+
if r == nil {
30+
return nil, nil
31+
}
32+
33+
jsonBytes, err := json.Marshal(r)
34+
if err != nil {
35+
return nil, fmt.Errorf("failed to marshal RecordReferrer: %w", err)
36+
}
37+
38+
var normalized any
39+
if err := json.Unmarshal(jsonBytes, &normalized); err != nil {
40+
return nil, fmt.Errorf("failed to normalize JSON for canonical ordering: %w", err)
41+
}
42+
43+
canonicalBytes, err := json.Marshal(normalized)
44+
if err != nil {
45+
return nil, fmt.Errorf("failed to marshal normalized JSON with sorted keys: %w", err)
46+
}
47+
48+
return canonicalBytes, nil
49+
}

api/core/v1/referrer.pb.go

Lines changed: 142 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)