add a token interface
This commit is contained in:
@@ -32,7 +32,7 @@ func (t *Token) ToSealed(privKey crypto.PrivKey) ([]byte, cid.Cid, error) {
|
|||||||
return data, id, nil
|
return data, id, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToSealedWriter is the same as Seal but accepts an io.Writer.
|
// ToSealedWriter is the same as ToSealed but accepts an io.Writer.
|
||||||
func (t *Token) ToSealedWriter(w io.Writer, privKey crypto.PrivKey) (cid.Cid, error) {
|
func (t *Token) ToSealedWriter(w io.Writer, privKey crypto.PrivKey) (cid.Cid, error) {
|
||||||
cidWriter := envelope.NewCIDWriter(w)
|
cidWriter := envelope.NewCIDWriter(w)
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ func (t *Token) Encode(privKey crypto.PrivKey, encFn codec.Encoder) ([]byte, err
|
|||||||
return ipld.Encode(node, encFn)
|
return ipld.Encode(node, encFn)
|
||||||
}
|
}
|
||||||
|
|
||||||
// EncodeWriter is the same as Encode but accepts an io.Writer.
|
// EncodeWriter is the same as Encode, but accepts an io.Writer.
|
||||||
func (t *Token) EncodeWriter(w io.Writer, privKey crypto.PrivKey, encFn codec.Encoder) error {
|
func (t *Token) EncodeWriter(w io.Writer, privKey crypto.PrivKey, encFn codec.Encoder) error {
|
||||||
node, err := t.toIPLD(privKey)
|
node, err := t.toIPLD(privKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -108,7 +108,7 @@ func (t *Token) ToDagCbor(privKey crypto.PrivKey) ([]byte, error) {
|
|||||||
return t.Encode(privKey, dagcbor.Encode)
|
return t.Encode(privKey, dagcbor.Encode)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToDagCborWriter is the same as ToDagCbor but it accepts an io.Writer.
|
// ToDagCborWriter is the same as ToDagCbor, but it accepts an io.Writer.
|
||||||
func (t *Token) ToDagCborWriter(w io.Writer, privKey crypto.PrivKey) error {
|
func (t *Token) ToDagCborWriter(w io.Writer, privKey crypto.PrivKey) error {
|
||||||
return t.EncodeWriter(w, privKey, dagcbor.Encode)
|
return t.EncodeWriter(w, privKey, dagcbor.Encode)
|
||||||
}
|
}
|
||||||
@@ -118,7 +118,7 @@ func (t *Token) ToDagJson(privKey crypto.PrivKey) ([]byte, error) {
|
|||||||
return t.Encode(privKey, dagjson.Encode)
|
return t.Encode(privKey, dagjson.Encode)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToDagJsonWriter is the same as ToDagJson but it accepts an io.Writer.
|
// ToDagJsonWriter is the same as ToDagJson, but it accepts an io.Writer.
|
||||||
func (t *Token) ToDagJsonWriter(w io.Writer, privKey crypto.PrivKey) error {
|
func (t *Token) ToDagJsonWriter(w io.Writer, privKey crypto.PrivKey) error {
|
||||||
return t.EncodeWriter(w, privKey, dagjson.Encode)
|
return t.EncodeWriter(w, privKey, dagjson.Encode)
|
||||||
}
|
}
|
||||||
|
|||||||
41
token/interface.go
Normal file
41
token/interface.go
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
package token
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
|
||||||
|
"github.com/ipfs/go-cid"
|
||||||
|
"github.com/ipld/go-ipld-prime/codec"
|
||||||
|
"github.com/libp2p/go-libp2p/core/crypto"
|
||||||
|
|
||||||
|
"github.com/ucan-wg/go-ucan/did"
|
||||||
|
"github.com/ucan-wg/go-ucan/pkg/meta"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Token interface {
|
||||||
|
Marshaller
|
||||||
|
|
||||||
|
// Issuer returns the did.DID representing the Token's issuer.
|
||||||
|
Issuer() did.DID
|
||||||
|
// Meta returns the Token's metadata.
|
||||||
|
Meta() *meta.Meta
|
||||||
|
}
|
||||||
|
|
||||||
|
type Marshaller interface {
|
||||||
|
// ToSealed wraps the token in an envelope, generates the signature, encodes
|
||||||
|
// the result to DAG-CBOR and calculates the CID of the resulting binary data.
|
||||||
|
ToSealed(privKey crypto.PrivKey) ([]byte, cid.Cid, error)
|
||||||
|
// ToSealedWriter is the same as ToSealed but accepts an io.Writer.
|
||||||
|
ToSealedWriter(w io.Writer, privKey crypto.PrivKey) (cid.Cid, error)
|
||||||
|
// Encode marshals a Token to the format specified by the provided codec.Encoder.
|
||||||
|
Encode(privKey crypto.PrivKey, encFn codec.Encoder) ([]byte, error)
|
||||||
|
// EncodeWriter is the same as Encode, but accepts an io.Writer.
|
||||||
|
EncodeWriter(w io.Writer, privKey crypto.PrivKey, encFn codec.Encoder) error
|
||||||
|
// ToDagCbor marshals the Token to the DAG-CBOR format.
|
||||||
|
ToDagCbor(privKey crypto.PrivKey) ([]byte, error)
|
||||||
|
// ToDagCborWriter is the same as ToDagCbor, but it accepts an io.Writer.
|
||||||
|
ToDagCborWriter(w io.Writer, privKey crypto.PrivKey) error
|
||||||
|
// ToDagJson marshals the Token to the DAG-JSON format.
|
||||||
|
ToDagJson(privKey crypto.PrivKey) ([]byte, error)
|
||||||
|
// ToDagJsonWriter is the same as ToDagJson, but it accepts an io.Writer.
|
||||||
|
ToDagJsonWriter(w io.Writer, privKey crypto.PrivKey) error
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user