diff --git a/events/event.go b/events/event.go index 4d534a8..be9bd3b 100644 --- a/events/event.go +++ b/events/event.go @@ -14,6 +14,7 @@ type Tag []string // Event represents a Nostr protocol event, with its seven required fields. // All fields must be present for a valid event. +//easyjson:json type Event struct { ID string `json:"id"` PubKey string `json:"pubkey"` diff --git a/events/event_easyjson.go b/events/event_easyjson.go new file mode 100644 index 0000000..48fb491 --- /dev/null +++ b/events/event_easyjson.go @@ -0,0 +1,214 @@ +// Code generated by easyjson for marshaling/unmarshaling. DO NOT EDIT. + +package events + +import ( + json "encoding/json" + easyjson "github.com/mailru/easyjson" + jlexer "github.com/mailru/easyjson/jlexer" + jwriter "github.com/mailru/easyjson/jwriter" +) + +// suppress unused package warning +var ( + _ *json.RawMessage + _ *jlexer.Lexer + _ *jwriter.Writer + _ easyjson.Marshaler +) + +func easyjsonF642ad3eDecodeGitWisehodlDevJayGoRootsEvents(in *jlexer.Lexer, out *Event) { + isTopLevel := in.IsStart() + if in.IsNull() { + if isTopLevel { + in.Consumed() + } + in.Skip() + return + } + in.Delim('{') + for !in.IsDelim('}') { + key := in.UnsafeFieldName(false) + in.WantColon() + switch key { + case "id": + if in.IsNull() { + in.Skip() + } else { + out.ID = string(in.String()) + } + case "pubkey": + if in.IsNull() { + in.Skip() + } else { + out.PubKey = string(in.String()) + } + case "created_at": + if in.IsNull() { + in.Skip() + } else { + out.CreatedAt = int64(in.Int64()) + } + case "kind": + if in.IsNull() { + in.Skip() + } else { + out.Kind = int(in.Int()) + } + case "tags": + if in.IsNull() { + in.Skip() + out.Tags = nil + } else { + in.Delim('[') + if out.Tags == nil { + if !in.IsDelim(']') { + out.Tags = make([]Tag, 0, 2) + } else { + out.Tags = []Tag{} + } + } else { + out.Tags = (out.Tags)[:0] + } + for !in.IsDelim(']') { + var v1 Tag + if in.IsNull() { + in.Skip() + v1 = nil + } else { + in.Delim('[') + if v1 == nil { + if !in.IsDelim(']') { + v1 = make(Tag, 0, 4) + } else { + v1 = Tag{} + } + } else { + v1 = (v1)[:0] + } + for !in.IsDelim(']') { + var v2 string + if in.IsNull() { + in.Skip() + } else { + v2 = string(in.String()) + } + v1 = append(v1, v2) + in.WantComma() + } + in.Delim(']') + } + out.Tags = append(out.Tags, v1) + in.WantComma() + } + in.Delim(']') + } + case "content": + if in.IsNull() { + in.Skip() + } else { + out.Content = string(in.String()) + } + case "sig": + if in.IsNull() { + in.Skip() + } else { + out.Sig = string(in.String()) + } + default: + in.SkipRecursive() + } + in.WantComma() + } + in.Delim('}') + if isTopLevel { + in.Consumed() + } +} +func easyjsonF642ad3eEncodeGitWisehodlDevJayGoRootsEvents(out *jwriter.Writer, in Event) { + out.RawByte('{') + first := true + _ = first + { + const prefix string = ",\"id\":" + out.RawString(prefix[1:]) + out.String(string(in.ID)) + } + { + const prefix string = ",\"pubkey\":" + out.RawString(prefix) + out.String(string(in.PubKey)) + } + { + const prefix string = ",\"created_at\":" + out.RawString(prefix) + out.Int64(int64(in.CreatedAt)) + } + { + const prefix string = ",\"kind\":" + out.RawString(prefix) + out.Int(int(in.Kind)) + } + { + const prefix string = ",\"tags\":" + out.RawString(prefix) + if in.Tags == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 { + out.RawString("null") + } else { + out.RawByte('[') + for v3, v4 := range in.Tags { + if v3 > 0 { + out.RawByte(',') + } + if v4 == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 { + out.RawString("null") + } else { + out.RawByte('[') + for v5, v6 := range v4 { + if v5 > 0 { + out.RawByte(',') + } + out.String(string(v6)) + } + out.RawByte(']') + } + } + out.RawByte(']') + } + } + { + const prefix string = ",\"content\":" + out.RawString(prefix) + out.String(string(in.Content)) + } + { + const prefix string = ",\"sig\":" + out.RawString(prefix) + out.String(string(in.Sig)) + } + out.RawByte('}') +} + +// MarshalJSON supports json.Marshaler interface +func (v Event) MarshalJSON() ([]byte, error) { + w := jwriter.Writer{} + easyjsonF642ad3eEncodeGitWisehodlDevJayGoRootsEvents(&w, v) + return w.Buffer.BuildBytes(), w.Error +} + +// MarshalEasyJSON supports easyjson.Marshaler interface +func (v Event) MarshalEasyJSON(w *jwriter.Writer) { + easyjsonF642ad3eEncodeGitWisehodlDevJayGoRootsEvents(w, v) +} + +// UnmarshalJSON supports json.Unmarshaler interface +func (v *Event) UnmarshalJSON(data []byte) error { + r := jlexer.Lexer{Data: data} + easyjsonF642ad3eDecodeGitWisehodlDevJayGoRootsEvents(&r, v) + return r.Error() +} + +// UnmarshalEasyJSON supports easyjson.Unmarshaler interface +func (v *Event) UnmarshalEasyJSON(l *jlexer.Lexer) { + easyjsonF642ad3eDecodeGitWisehodlDevJayGoRootsEvents(l, v) +} diff --git a/go.mod b/go.mod index 41d417e..b00b50f 100644 --- a/go.mod +++ b/go.mod @@ -12,6 +12,8 @@ require ( github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/crypto/blake256 v1.1.0 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/mailru/easyjson v0.9.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 23a0004..0757d01 100644 --- a/go.sum +++ b/go.sum @@ -9,6 +9,10 @@ github.com/decred/dcrd/crypto/blake256 v1.1.0 h1:zPMNGQCm0g4QTY27fOCorQW7EryeQ/U github.com/decred/dcrd/crypto/blake256 v1.1.0/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 h1:NMZiJj8QnKe1LgsbDayM4UoHwbvwDRwnI3hwNaAHRnc= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/mailru/easyjson v0.9.2 h1:dX8U45hQsZpxd80nLvDGihsQ/OxlvTkVUXH2r/8cb2M= +github.com/mailru/easyjson v0.9.2/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=