Nostrduino
Loading...
Searching...
No Matches
NostrEvent.h
Go to the documentation of this file.
1
2#ifndef _NOSTR_EVENT_H
3#define _NOSTR_EVENT_H
4#include <Arduino.h>
5
6#include "ArduinoJson.h"
7#include "NostrString.h"
8#include "NostrLimits.h"
9#include "NostrUtils.h"
10#include <NostrAES.h>
11#include <functional>
12#include <initializer_list>
13#include <map>
14#include <vector>
15namespace nostr {
16using EventSubmissionFailureCallback = std::function<void(const String &)>;
17
19
20typedef struct s_NostrEventTag {
22 std::vector<NostrString> value;
24
26 public:
27 static const std::vector<NostrString> emptyTags;
29
33 unsigned int count() { return tags.size(); }
34
38 const std::vector<NostrEventTag> &getTags() const;
39
43 const std::vector<NostrString> &getTag(NostrString key) const;
44
49 unsigned int addTag(NostrString key, std::initializer_list<NostrString> values);
50
56 unsigned int addTag(NostrString key, std::vector<NostrString> values);
57
61 bool removeTag(size_t index);
62
66 void removeTags(NostrString key);
67
71 void clearTags();
72
76 void toJson(JsonArray doc) const;
77
78 protected:
79 std::vector<NostrEventTag> tags;
80};
81
86 public:
87 NostrEvent() : kind(0), created_at(0) {};
88
89 virtual ~NostrEvent(){};
90 unsigned long int getCreatedAt() const { return this->created_at; }
91 unsigned int getKind() const { return this->kind; }
92 NostrEventTags *getTags() { return &this->tags; }
93 const NostrEventTags *getTags() const { return &this->tags; }
94 NostrString getContent() const { return this->content; };
95
96 protected:
97 unsigned int kind;
100 unsigned long int created_at;
102};
103
111 public:
114
119
120 void setCreatedAt(unsigned long int created_at) { this->created_at = created_at; };
121 void setKind(unsigned int kind) { this->kind = kind; };
122
123 void setContent(NostrString content) { this->content = content; };
124};
125
131 friend class UnsignedNostrEvent;
132 friend class NostrPool;
133
134 private:
135 NostrString id;
136 NostrString pubkey;
137 NostrString signature;
138 NostrString subid;
139 bool stored;
140 mutable int verifyState = -1;
141 bool valid;
142
143 public:
144 SignedNostrEvent() : NostrEvent(), stored(false), verifyState(-1), valid(false) {}
146 bool isValid() const { return valid; }
147 NostrString getId() const { return this->id; }
148 bool isStored() const { return this->stored; }
149
150 NostrString getPubkey() const { return this->pubkey; };
151
152 const NostrEventTags *getTags() const { return &this->tags; };
153
154 NostrString getSignature() const { return this->signature; };
155 NostrString getSubId() const { return this->subid; };
156 void toSendableEvent(JsonArray doc) const;
157 void toJson(JsonObject doc) const;
158 bool verify() const;
159
160 protected:
162 : NostrEvent(kind, tags, content, created_at), id(id), pubkey(pubkey), signature(signature), stored(false), verifyState(-1), valid(true){};
163};
164
165}
166#endif
#define NostrString
Definition NostrString.h:10
Definition Nip47.h:44
Definition NostrEvent.h:25
const std::vector< NostrEventTag > & getTags() const
Definition NostrEvent.cpp:6
const std::vector< NostrString > & getTag(NostrString key) const
Definition NostrEvent.cpp:11
bool removeTag(size_t index)
Definition NostrEvent.cpp:40
std::vector< NostrEventTag > tags
Definition NostrEvent.h:79
static const std::vector< NostrString > emptyTags
Definition NostrEvent.h:27
void toJson(JsonArray doc) const
Definition NostrEvent.cpp:59
NostrEventTags()
Definition NostrEvent.h:28
void clearTags()
Definition NostrEvent.cpp:55
unsigned int addTag(NostrString key, std::initializer_list< NostrString > values)
Definition NostrEvent.cpp:20
unsigned int count()
Definition NostrEvent.h:33
void removeTags(NostrString key)
Definition NostrEvent.cpp:46
Definition NostrEvent.h:85
virtual ~NostrEvent()
Definition NostrEvent.h:89
unsigned int getKind() const
Definition NostrEvent.h:91
unsigned long int created_at
Definition NostrEvent.h:100
NostrEvent()
Definition NostrEvent.h:87
const NostrEventTags * getTags() const
Definition NostrEvent.h:93
NostrEventTags * getTags()
Definition NostrEvent.h:92
NostrEvent(unsigned int kind, NostrEventTags tags, NostrString content, unsigned long int created_at)
Definition NostrEvent.h:101
unsigned int kind
Definition NostrEvent.h:97
NostrString getContent() const
Definition NostrEvent.h:94
NostrString content
Definition NostrEvent.h:99
NostrEventTags tags
Definition NostrEvent.h:98
unsigned long int getCreatedAt() const
Definition NostrEvent.h:90
Definition NostrPool.h:92
Definition NostrEvent.h:130
SignedNostrEvent()
Definition NostrEvent.h:144
NostrString getSignature() const
Definition NostrEvent.h:154
SignedNostrEvent(NostrString id, NostrString pubkey, unsigned long int created_at, unsigned int kind, NostrEventTags tags, NostrString content, NostrString signature)
Definition NostrEvent.h:161
NostrString getPubkey() const
Definition NostrEvent.h:150
bool verify() const
Definition NostrEvent.cpp:108
static bool parseRelayFrame(JsonArrayConst relayEvent, SignedNostrEvent &out, const NostrLimits &limits=NostrLimits())
Definition NostrEvent.cpp:167
bool isStored() const
Definition NostrEvent.h:148
void toJson(JsonObject doc) const
Definition NostrEvent.cpp:150
void toSendableEvent(JsonArray doc) const
Definition NostrEvent.cpp:161
bool isValid() const
Definition NostrEvent.h:146
NostrString getSubId() const
Definition NostrEvent.h:155
const NostrEventTags * getTags() const
Definition NostrEvent.h:152
NostrString getId() const
Definition NostrEvent.h:147
Definition NostrEvent.h:110
SignedNostrEvent sign(NostrString privateKeyHex)
Definition NostrEvent.cpp:70
void setContent(NostrString content)
Definition NostrEvent.h:123
void setCreatedAt(unsigned long int created_at)
Definition NostrEvent.h:120
void setKind(unsigned int kind)
Definition NostrEvent.h:121
UnsignedNostrEvent(unsigned int kind, NostrString content, unsigned long int created_at)
Definition NostrEvent.h:113
UnsignedNostrEvent()
Definition NostrEvent.h:112
Definition CryptoLock.h:6
struct nostr::s_NostrEventTag NostrEventTag
std::function< void(const String &)> EventSubmissionFailureCallback
Definition NostrEvent.h:16
Definition NostrLimits.h:9
Definition NostrEvent.h:20
std::vector< NostrString > value
Definition NostrEvent.h:22
NostrString key
Definition NostrEvent.h:21