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

     1  package header
     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  )
    11  
    12  //go:embed header.ipldsch
    13  var headersch []byte
    14  
    15  var (
    16  	once sync.Once
    17  	ts   *schema.TypeSystem
    18  	err  error
    19  )
    20  
    21  func mustLoadSchema() *schema.TypeSystem {
    22  	once.Do(func() {
    23  		ts, err = ipld.LoadSchemaBytes(headersch)
    24  	})
    25  	if err != nil {
    26  		panic(fmt.Errorf("failed to load IPLD schema: %w", err))
    27  	}
    28  	return ts
    29  }
    30  
    31  func Type() schema.Type {
    32  	return mustLoadSchema().TypeByName("Header")
    33  }
    34  
    35  type HeaderModel struct {
    36  	Alg string
    37  	Ucv string
    38  	Typ string
    39  }