Documentation
¶
Overview ¶
Package cloudevent provides types for working with CloudEvents.
Index ¶
Constants ¶
const ( // TypeStatus is the event type for status updates. TypeStatus = "dimo.status" // TypeFingerprint is the event type for fingerprint updates. TypeFingerprint = "dimo.fingerprint" // TypeVerifableCredential is the event type for verifiable credentials. TypeVerifableCredential = "dimo.verifiablecredential" //nolint:gosec // This is not a credential. // TypeAttestation is the event type for 3rd party attestations TypeAttestation = "dimo.attestation" // TypeUnknown is the event type for unknown events. TypeUnknown = "dimo.unknown" // TypeEvent is the event type for vehicle events TypeEvent = "dimo.event" // TypeTrigger is the event type from a vehicle trigger. TypeTrigger = "dimo.trigger" // TypeSACD is the event type for SACD events. TypeSACD = "dimo.sacd" // TypeSACDTemplate is the event type for SACD template events. TypeSACDTemplate = "dimo.sacd.template" )
const ( // ERC721DIDMethod is the method for a ERC721 NFT DID. ERC721DIDMethod = "erc721" // EthrDIDMethod is the method for a Ethereum Address DID. EthrDIDMethod = "ethr" // ERC20DIDMethod is the method for a ERC20 token DID. ERC20DIDMethod = "erc20" )
const SpecVersion = "1.0"
SpecVersion is the version of the CloudEvents spec.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type CloudEvent ¶
type CloudEvent[A any] struct { CloudEventHeader // Data contains domain-specific information about the event. Data A `json:"data"` }
CloudEvent represents an event according to the CloudEvents spec. To Add extra headers to the CloudEvent, add them to the Extras map. See https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md
func (CloudEvent[A]) MarshalJSON ¶
func (c CloudEvent[A]) MarshalJSON() ([]byte, error)
MarshalJSON implements custom JSON marshaling for CloudEventHeader.
func (*CloudEvent[A]) UnmarshalJSON ¶
func (c *CloudEvent[A]) UnmarshalJSON(data []byte) error
UnmarshalJSON implements custom JSON unmarshaling for CloudEvent.
type CloudEventHeader ¶
type CloudEventHeader struct {
// ID is an identifier for the event. The combination of ID and Source must
// be unique.
ID string `json:"id"`
// Source is the context in which the event happened. In a distributed system it might consist of multiple Producers.
Source string `json:"source"`
// Producer is a specific instance, process or device that creates the data structure describing the CloudEvent.
Producer string `json:"producer"`
// SpecVersion is the version of CloudEvents specification used.
// This is always hardcoded "1.0".
SpecVersion string `json:"specversion"`
// Subject is an optional field identifying the subject of the event within
// the context of the event producer. In practice, we always set this.
Subject string `json:"subject"`
// Time is an optional field giving the time at which the event occurred. In
// practice, we always set this.
Time time.Time `json:"time"`
// Type describes the type of event. It should generally be a reverse-DNS
// name.
Type string `json:"type"`
// DataContentType is an optional MIME type for the data field. We almost
// always serialize to JSON and in that case this field is implicitly
// "application/json".
DataContentType string `json:"datacontenttype,omitempty"`
// DataSchema is an optional URI pointing to a schema for the data field.
DataSchema string `json:"dataschema,omitempty"`
// DataVersion is the version of the data type.
DataVersion string `json:"dataversion,omitempty"`
// Signature hold the signature of the a cloudevent's data field.
Signature string `json:"signature,omitempty" cloudevent:"leaveInExtras"`
// Tags are a list of tags that can be used to filter events.
Tags []string `json:"tags,omitempty"`
// Extras contains any additional fields that are not part of the CloudEvent excluding the data field.
Extras map[string]any `json:"-"`
}
CloudEventHeader contains the metadata for any CloudEvent. To add extra headers to the CloudEvent, add them to the Extras map.
func (*CloudEventHeader) Equals ¶
func (c *CloudEventHeader) Equals(other CloudEventHeader) bool
Equals returns true if the two CloudEventHeaders share the same IndexKey.
func (CloudEventHeader) Key ¶ added in v0.0.3
func (c CloudEventHeader) Key() string
Key returns the unique identifier for the CloudEvent.
func (CloudEventHeader) MarshalJSON ¶
func (c CloudEventHeader) MarshalJSON() ([]byte, error)
MarshalJSON implements custom JSON marshaling for CloudEventHeader.
func (*CloudEventHeader) UnmarshalJSON ¶
func (c *CloudEventHeader) UnmarshalJSON(data []byte) error
UnmarshalJSON implements custom JSON unmarshaling for CloudEventHeader.
type ERC20DID ¶ added in v0.1.0
type ERC20DID struct {
ChainID uint64 `json:"chainId"`
ContractAddress common.Address `json:"contract"`
}
ERC20DID is a Decentralized Identifier for an ERC20 token.
func DecodeERC20DID ¶ added in v0.1.0
DecodeERC20DID decodes a ERC20 DID string into a DID struct.
func (ERC20DID) MarshalText ¶ added in v0.1.1
MarshalText implements encoding.TextMarshaler
func (*ERC20DID) UnmarshalText ¶ added in v0.1.1
UnmarshalText implements encoding.TextUnmarshaler
type ERC721DID ¶ added in v0.1.0
type ERC721DID struct {
ChainID uint64 `json:"chainId"`
ContractAddress common.Address `json:"contract"`
TokenID *big.Int `json:"tokenId"`
}
ERC721DID is a Decentralized Identifier for a ERC721 NFT.
func DecodeERC721DID ¶ added in v0.1.0
DecodeERC721DID decodes a DID string into a DID struct.
func DecodeERC721orNFTDID ¶ added in v0.1.0
DecodeERC721orNFTDID is a decoder that attempts to decode a DID string into an ERC721DID or a legacy NFT DID.
func DecodeLegacyNFTDID ¶ added in v0.1.0
DecodeLegacyNFTDID is a legacy decoder for NFT DIDs that use the format "did:nft:1:0xbA5738a18d83D41847dfFbDC6101d37C69c9B0cF_1" You most likely want to use DecodeERC721DID instead.
func (ERC721DID) MarshalText ¶ added in v0.1.1
MarshalText implements encoding.TextMarshaler
func (*ERC721DID) UnmarshalText ¶ added in v0.1.1
UnmarshalText implements encoding.TextUnmarshaler
type EthrDID ¶
type EthrDID struct {
ChainID uint64 `json:"chainId"`
ContractAddress common.Address `json:"contract"`
}
EthrDID is a Decentralized Identifier for an Ethereum contract.
func DecodeEthrDID ¶
DecodeEthrDID decodes a Ethr DID string into a DID struct.
func (EthrDID) MarshalText ¶ added in v0.1.1
MarshalText implements encoding.TextMarshaler
func (*EthrDID) UnmarshalText ¶ added in v0.1.1
UnmarshalText implements encoding.TextUnmarshaler
type Fingerprint ¶
type Fingerprint struct {
VIN string `json:"vin"`
}
Fingerprint represents a fingerprint message which holds a vehicle's VIN.
type FingerprintEvent ¶
type FingerprintEvent = CloudEvent[Fingerprint]
FingerprintEvent is a CloudEvent for a fingerprint message.
type RawEvent ¶
type RawEvent = CloudEvent[json.RawMessage]
RawEvent is a cloudevent with a json.RawMessage data field.
Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
migrations
command
|
|
|
pkg
|
|
|
codegen
command
Package main provides a code generator for CloudEventHeader field accessors.
|
Package main provides a code generator for CloudEventHeader field accessors. |