github.com/storacha/go-ucanto@v0.7.2/ucan/datamodel/payload/payload.go (about)

     1  package payload
     2  
     3  import (
     4  	_ "embed"
     5  	"fmt"
     6  	"sync"
     7  
     8  	"github.com/ipld/go-ipld-prime"
     9  	"github.com/ipld/go-ipld-prime/schema"
    10  	udm "github.com/storacha/go-ucanto/ucan/datamodel/ucan"
    11  )
    12  
    13  //go:embed payload.ipldsch
    14  var payloadsch []byte
    15  
    16  var (
    17  	once sync.Once
    18  	ts   *schema.TypeSystem
    19  	err  error
    20  )
    21  
    22  func mustLoadSchema() *schema.TypeSystem {
    23  	once.Do(func() {
    24  		ts, err = ipld.LoadSchemaBytes(payloadsch)
    25  	})
    26  	if err != nil {
    27  		panic(fmt.Errorf("failed to load IPLD schema: %w", err))
    28  	}
    29  	return ts
    30  }
    31  
    32  func Type() schema.Type {
    33  	return mustLoadSchema().TypeByName("Payload")
    34  }
    35  
    36  type PayloadModel struct {
    37  	Iss string
    38  	Aud string
    39  	Att []udm.CapabilityModel
    40  	Prf []string
    41  	Exp *int
    42  	Fct []udm.FactModel
    43  	Nnc *string
    44  	Nbf *int
    45  }