44 "fmt"
55 "io"
66
7+ "github.com/MetaMask/go-did-it"
78 "github.com/ipfs/go-cid"
89 "github.com/ipld/go-ipld-prime"
910 "github.com/ipld/go-ipld-prime/codec"
@@ -23,8 +24,8 @@ import (
2324// Supported and returned types are:
2425// - delegation.Token
2526// - invocation.Token
26- func FromSealed (data []byte ) (Token , cid.Cid , error ) {
27- tkn , err := FromDagCbor (data )
27+ func FromSealed (data []byte , resolvOpts ... did. ResolutionOption ) (Token , cid.Cid , error ) {
28+ tkn , err := FromDagCbor (data , resolvOpts ... )
2829 if err != nil {
2930 return nil , cid .Undef , err
3031 }
@@ -38,10 +39,10 @@ func FromSealed(data []byte) (Token, cid.Cid, error) {
3839}
3940
4041// FromSealedReader is the same as Unseal but accepts an io.Reader.
41- func FromSealedReader (r io.Reader ) (Token , cid.Cid , error ) {
42+ func FromSealedReader (r io.Reader , resolvOpts ... did. ResolutionOption ) (Token , cid.Cid , error ) {
4243 cidReader := envelope .NewCIDReader (r )
4344
44- tkn , err := FromDagCborReader (cidReader )
45+ tkn , err := FromDagCborReader (cidReader , resolvOpts ... )
4546 if err != nil {
4647 return nil , cid .Undef , err
4748 }
@@ -61,21 +62,21 @@ func FromSealedReader(r io.Reader) (Token, cid.Cid, error) {
6162// Supported and returned types are:
6263// - delegation.Token
6364// - invocation.Token
64- func Decode (b []byte , decFn codec.Decoder ) (Token , error ) {
65+ func Decode (b []byte , decFn codec.Decoder , resolvOpts ... did. ResolutionOption ) (Token , error ) {
6566 node , err := ipld .Decode (b , decFn )
6667 if err != nil {
6768 return nil , err
6869 }
69- return fromIPLD (node )
70+ return fromIPLD (node , resolvOpts ... )
7071}
7172
7273// DecodeReader is the same as Decode, but accept an io.Reader.
73- func DecodeReader (r io.Reader , decFn codec.Decoder ) (Token , error ) {
74+ func DecodeReader (r io.Reader , decFn codec.Decoder , resolvOpts ... did. ResolutionOption ) (Token , error ) {
7475 node , err := ipld .DecodeStreaming (r , decFn )
7576 if err != nil {
7677 return nil , err
7778 }
78- return fromIPLD (node )
79+ return fromIPLD (node , resolvOpts ... )
7980}
8081
8182// FromDagCbor unmarshals an arbitrary DagCbor encoded UCAN token.
@@ -84,41 +85,41 @@ func DecodeReader(r io.Reader, decFn codec.Decoder) (Token, error) {
8485// Supported and returned types are:
8586// - delegation.Token
8687// - invocation.Token
87- func FromDagCbor (b []byte ) (Token , error ) {
88- return Decode (b , dagcbor .Decode )
88+ func FromDagCbor (b []byte , resolvOpts ... did. ResolutionOption ) (Token , error ) {
89+ return Decode (b , dagcbor .Decode , resolvOpts ... )
8990}
9091
9192// FromDagCborReader is the same as FromDagCbor, but accept an io.Reader.
92- func FromDagCborReader (r io.Reader ) (Token , error ) {
93- return DecodeReader (r , dagcbor .Decode )
93+ func FromDagCborReader (r io.Reader , resolvOpts ... did. ResolutionOption ) (Token , error ) {
94+ return DecodeReader (r , dagcbor .Decode , resolvOpts ... )
9495}
9596
96- // FromDagCbor unmarshals an arbitrary DagJson encoded UCAN token.
97+ // FromDagJson unmarshals an arbitrary DagJson encoded UCAN token.
9798// An error is returned if the conversion fails, or if the resulting
9899// Token is invalid.
99100// Supported and returned types are:
100101// - delegation.Token
101102// - invocation.Token
102- func FromDagJson (b []byte ) (Token , error ) {
103- return Decode (b , dagjson .Decode )
103+ func FromDagJson (b []byte , resolvOpts ... did. ResolutionOption ) (Token , error ) {
104+ return Decode (b , dagjson .Decode , resolvOpts ... )
104105}
105106
106107// FromDagJsonReader is the same as FromDagJson, but accept an io.Reader.
107- func FromDagJsonReader (r io.Reader ) (Token , error ) {
108- return DecodeReader (r , dagjson .Decode )
108+ func FromDagJsonReader (r io.Reader , resolvOpts ... did. ResolutionOption ) (Token , error ) {
109+ return DecodeReader (r , dagjson .Decode , resolvOpts ... )
109110}
110111
111- func fromIPLD (node datamodel.Node ) (Token , error ) {
112+ func fromIPLD (node datamodel.Node , resolvOpts ... did. ResolutionOption ) (Token , error ) {
112113 tag , err := envelope .FindTag (node )
113114 if err != nil {
114115 return nil , err
115116 }
116117
117118 switch tag {
118119 case delegation .Tag :
119- return delegation .FromIPLD (node )
120+ return delegation .FromIPLD (node , resolvOpts ... )
120121 case invocation .Tag :
121- return invocation .FromIPLD (node )
122+ return invocation .FromIPLD (node , resolvOpts ... )
122123 default :
123124 return nil , fmt .Errorf (`unknown tag "%s"` , tag )
124125 }
0 commit comments