aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulio Capote <jcapote@gmail.com>2023-01-04 13:22:57 +0000
committerJulio Capote <jcapote@gmail.com>2023-01-04 13:22:57 +0000
commite92d23b4e3e065fe7e0ce87b5045dd7199ff0c0c (patch)
treea1060b513fad5eb0ca425db53533588a5fe9da26
parent979d2c5e0f8188840bbc1c99daed470e20c5eabc (diff)
downloadcommunique-e92d23b4e3e065fe7e0ce87b5045dd7199ff0c0c.tar.gz
try to resolve publickey json
-rw-r--r--registry/registry.go20
1 files changed, 17 insertions, 3 deletions
diff --git a/registry/registry.go b/registry/registry.go
index 20138e1..5b912b1 100644
--- a/registry/registry.go
+++ b/registry/registry.go
@@ -186,9 +186,23 @@ func (r *Registry) Inbox(name string, req *http.Request) error {
if err != nil {
return err
}
- var t vocab.ActivityStreamsPerson
- streams.ToType(context.Background(), keyPageData)
- pubKeyProp := t.GetW3IDSecurityV1PublicKey()
+
+ var person vocab.ActivityStreamsPerson
+
+ resolver, err := streams.NewJSONResolver(func(c context.Context, p vocab.ActivityStreamsPerson) error {
+ // Store the person in the enclosing scope, for later.
+ person = p
+ return nil
+ }, func(c context.Context, note vocab.ActivityStreamsNote) error {
+ // We can treat the type differently.
+ return nil
+ })
+
+ ctx := context.Background()
+ // Pass in a vocab.Type instead of map[string]interface{}.
+ err = resolver.Resolve(ctx, keyPageData)
+
+ pubKeyProp := person.GetW3IDSecurityV1PublicKey()
iter := pubKeyProp.At(0)
pubKey := iter.Get()
pemProp := pubKey.GetW3IDSecurityV1PublicKeyPem()