dedicated Kind type.

This commit is contained in:
fiatjaf 2024-01-01 12:42:37 -03:00
parent 5938a71146
commit 9624183ceb
10 changed files with 55 additions and 52 deletions

View File

@ -18,7 +18,7 @@ func UnmarshalBinary(data []byte, evt *Event) (err error) {
copy(evt.PubKey[:], data[32:64])
copy(evt.Sig[:], data[64:128])
evt.CreatedAt = nostr.Timestamp(binary.BigEndian.Uint32(data[128:132]))
evt.Kind = binary.BigEndian.Uint16(data[132:134])
evt.Kind = nostr.Kind(binary.BigEndian.Uint16(data[132:134]))
contentLength := int(binary.BigEndian.Uint16(data[134:136]))
evt.Content = string(data[136 : 136+contentLength])
@ -54,7 +54,7 @@ func MarshalBinary(evt *Event) []byte {
copy(buf[32:64], evt.PubKey[:])
copy(buf[64:128], evt.Sig[:])
binary.BigEndian.PutUint32(buf[128:132], uint32(evt.CreatedAt))
binary.BigEndian.PutUint16(buf[132:134], evt.Kind)
binary.BigEndian.PutUint16(buf[132:134], uint16(evt.Kind))
binary.BigEndian.PutUint16(buf[134:136], uint16(len(content)))
copy(buf[136:], content)

View File

@ -10,7 +10,7 @@ type Event struct {
PubKey [32]byte
Sig [64]byte
ID [32]byte
Kind uint16
Kind nostr.Kind
CreatedAt nostr.Timestamp
Content string
Tags nostr.Tags
@ -20,7 +20,7 @@ func BinaryEvent(evt *nostr.Event) *Event {
bevt := Event{
Tags: evt.Tags,
Content: evt.Content,
Kind: uint16(evt.Kind),
Kind: evt.Kind,
CreatedAt: evt.CreatedAt,
}
@ -35,7 +35,7 @@ func (bevt *Event) ToNormalEvent() *nostr.Event {
return &nostr.Event{
Tags: bevt.Tags,
Content: bevt.Content,
Kind: int(bevt.Kind),
Kind: bevt.Kind,
CreatedAt: bevt.CreatedAt,
ID: hex.EncodeToString(bevt.ID[:]),
PubKey: hex.EncodeToString(bevt.PubKey[:]),

View File

@ -19,7 +19,7 @@ func Unmarshal(data []byte, evt *nostr.Event) (err error) {
evt.PubKey = hex.EncodeToString(data[32:64])
evt.Sig = hex.EncodeToString(data[64:128])
evt.CreatedAt = nostr.Timestamp(binary.BigEndian.Uint32(data[128:132]))
evt.Kind = int(binary.BigEndian.Uint16(data[132:134]))
evt.Kind = nostr.Kind(binary.BigEndian.Uint16(data[132:134]))
contentLength := int(binary.BigEndian.Uint16(data[134:136]))
evt.Content = string(data[136 : 136+contentLength])

View File

@ -14,7 +14,7 @@ type Event struct {
ID string `json:"id"`
PubKey string `json:"pubkey"`
CreatedAt Timestamp `json:"created_at"`
Kind int `json:"kind"`
Kind Kind `json:"kind"`
Tags Tags `json:"tags"`
Content string `json:"content"`
Sig string `json:"sig"`
@ -23,41 +23,6 @@ type Event struct {
extra map[string]any
}
const (
KindProfileMetadata int = 0
KindTextNote int = 1
KindRecommendServer int = 2
KindContactList int = 3
KindEncryptedDirectMessage int = 4
KindDeletion int = 5
KindRepost int = 6
KindReaction int = 7
KindChannelCreation int = 40
KindChannelMetadata int = 41
KindChannelMessage int = 42
KindChannelHideMessage int = 43
KindChannelMuteUser int = 44
KindFileMetadata int = 1063
KindZapRequest int = 9734
KindZap int = 9735
KindMuteList int = 10000
KindPinList int = 10001
KindRelayListMetadata int = 10002
KindNWCWalletInfo int = 13194
KindClientAuthentication int = 22242
KindNWCWalletRequest int = 23194
KindNWCWalletResponse int = 23195
KindNostrConnect int = 24133
KindCategorizedPeopleList int = 30000
KindCategorizedBookmarksList int = 30001
KindProfileBadges int = 30008
KindBadgeDefinition int = 30009
KindStallDefinition int = 30017
KindProductDefinition int = 30018
KindArticle int = 30023
KindApplicationSpecificData int = 30078
)
// Event Stringer interface, just returns the raw JSON as a string.
func (evt Event) String() string {
j, _ := easyjson.Marshal(evt)

View File

@ -45,7 +45,7 @@ func easyjsonF642ad3eDecodeGithubComNbdWtfGoNostr(in *jlexer.Lexer, out *Event)
case "created_at":
out.CreatedAt = Timestamp(in.Int64())
case "kind":
out.Kind = in.Int()
out.Kind = Kind(in.Uint16())
case "tags":
if in.IsNull() {
in.Skip()
@ -127,7 +127,7 @@ func easyjsonF642ad3eEncodeGithubComNbdWtfGoNostr(out *jwriter.Writer, in Event)
{
const prefix string = ",\"kind\":"
out.RawString(prefix)
out.Int(in.Kind)
out.Uint16(uint16(in.Kind))
}
{
const prefix string = ",\"tags\":"

View File

@ -41,7 +41,7 @@ func main() {
// this filters for messages tagged with the user, mainly replies.
t["p"] = []string{v.(string)}
filters = []nostr.Filter{{
Kinds: []int{nostr.KindTextNote},
Kinds: []nostr.Kind{nostr.KindTextNote},
Tags: t,
// limit = 3, get the three most recent notes
Limit: 3,

View File

@ -11,7 +11,7 @@ type Filters []Filter
type Filter struct {
IDs []string `json:"ids,omitempty"`
Kinds []int `json:"kinds,omitempty"`
Kinds []Kind `json:"kinds,omitempty"`
Authors []string `json:"authors,omitempty"`
Tags TagMap `json:"-,omitempty"`
Since *Timestamp `json:"since,omitempty"`

View File

@ -69,16 +69,15 @@ func easyjson4d398eaaDecodeGithubComNbdWtfGoNostr(in *jlexer.Lexer, out *Filter)
in.Delim('[')
if out.Kinds == nil {
if !in.IsDelim(']') {
out.Kinds = make([]int, 0, 8)
out.Kinds = make([]Kind, 0, 8)
} else {
out.Kinds = []int{}
out.Kinds = []Kind{}
}
} else {
out.Kinds = (out.Kinds)[:0]
}
for !in.IsDelim(']') {
var v2 int
v2 = int(in.Int())
v2 := Kind(in.Uint16())
out.Kinds = append(out.Kinds, v2)
in.WantComma()
}

38
kinds.go Normal file
View File

@ -0,0 +1,38 @@
package nostr
type Kind uint16
const (
KindProfileMetadata Kind = 0
KindTextNote Kind = 1
KindRecommendServer Kind = 2
KindContactList Kind = 3
KindEncryptedDirectMessage Kind = 4
KindDeletion Kind = 5
KindRepost Kind = 6
KindReaction Kind = 7
KindChannelCreation Kind = 40
KindChannelMetadata Kind = 41
KindChannelMessage Kind = 42
KindChannelHideMessage Kind = 43
KindChannelMuteUser Kind = 44
KindFileMetadata Kind = 1063
KindZapRequest Kind = 9734
KindZap Kind = 9735
KindMuteList Kind = 10000
KindPinList Kind = 10001
KindRelayListMetadata Kind = 10002
KindNWCWalletInfo Kind = 13194
KindClientAuthentication Kind = 22242
KindNWCWalletRequest Kind = 23194
KindNWCWalletResponse Kind = 23195
KindNostrConnect Kind = 24133
KindCategorizedPeopleList Kind = 30000
KindCategorizedBookmarksList Kind = 30001
KindProfileBadges Kind = 30008
KindBadgeDefinition Kind = 30009
KindStallDefinition Kind = 30017
KindProductDefinition Kind = 30018
KindArticle Kind = 30023
KindApplicationSpecificData Kind = 30078
)

View File

@ -76,7 +76,8 @@ func Unmarshal(data string, evt *nostr.Event) (err error) {
// kind
kindChars := int(nsonDescriptors[0])
kindStart := NSON_VALUES_START + nsonSize + 9 // len(`","kind":`)
evt.Kind, _ = strconv.Atoi(data[kindStart : kindStart+kindChars])
kind, _ := strconv.ParseUint(data[kindStart:kindStart+kindChars], 10, 16)
evt.Kind = nostr.Kind(kind)
// content
contentChars := int(binary.BigEndian.Uint16(nsonDescriptors[1:3]))
@ -151,7 +152,7 @@ func Marshal(evt *nostr.Event) (string, error) {
tagBuilder.WriteString(`]}`)
nsonBuf = nsonBuf[0 : nsonIndex+1]
kind := strconv.Itoa(evt.Kind)
kind := strconv.FormatUint(uint64(evt.Kind), 10)
kindChars := len(kind)
nsonBuf[0] = uint8(kindChars)