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 }