aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Michael Jurkoic <mjjurkoic@gmail.com>2024-03-25 08:07:28 -0500
committerLibravatar Michael Jurkoic <mjjurkoic@gmail.com>2024-03-25 08:07:28 -0500
commita66a287806ab5a8e9d5a3894287f578c5953de7e (patch)
tree640215e63dfe19d0f15a11588bb95c895afeee58
parent111b9914c601730a3697a3b7ff8a60fd2c15a38a (diff)
Replace Event::deserialize with static methods
-rw-r--r--include/nostr.hpp10
-rw-r--r--src/event.cpp37
-rw-r--r--src/nostr_service.cpp6
3 files changed, 39 insertions, 14 deletions
diff --git a/include/nostr.hpp b/include/nostr.hpp
index 2f37c51..1e462e7 100644
--- a/include/nostr.hpp
+++ b/include/nostr.hpp
@@ -47,8 +47,16 @@ struct Event
/**
* @brief Deserializes the event from a JSON string.
* @param jsonString A stringified JSON object representing the event.
+ * @returns An event instance created from the JSON string.
*/
- void deserialize(std::string jsonString);
+ static Event fromString(std::string jsonString);
+
+ /**
+ * @brief Deserializes the event from a JSON object.
+ * @param j A JSON object representing the event.
+ * @returns An event instance created from the JSON object.
+ */
+ static Event fromJson(nlohmann::json j);
private:
/**
diff --git a/src/event.cpp b/src/event.cpp
index e77e33d..6510ac6 100644
--- a/src/event.cpp
+++ b/src/event.cpp
@@ -48,16 +48,35 @@ string Event::serialize()
return jarr.dump();
};
-void Event::deserialize(string jsonString)
+Event Event::fromString(string jstr)
{
- json j = json::parse(jsonString);
- this->id = j["id"];
- this->pubkey = j["pubkey"];
- this->createdAt = j["created_at"];
- this->kind = j["kind"];
- this->tags = j["tags"];
- this->content = j["content"];
- this->sig = j["sig"];
+ json j = json::parse(jstr);
+ Event event;
+
+ event.id = j["id"];
+ event.pubkey = j["pubkey"];
+ event.createdAt = j["created_at"];
+ event.kind = j["kind"];
+ event.tags = j["tags"];
+ event.content = j["content"];
+ event.sig = j["sig"];
+
+ return event;
+};
+
+Event Event::fromJson(json j)
+{
+ Event event;
+
+ event.id = j["id"];
+ event.pubkey = j["pubkey"];
+ event.createdAt = j["created_at"];
+ event.kind = j["kind"];
+ event.tags = j["tags"];
+ event.content = j["content"];
+ event.sig = j["sig"];
+
+ return event;
};
void Event::validate()
diff --git a/src/nostr_service.cpp b/src/nostr_service.cpp
index 971516f..c7e3158 100644
--- a/src/nostr_service.cpp
+++ b/src/nostr_service.cpp
@@ -490,10 +490,8 @@ void NostrService::onMessage(string message, function<void(const string&, Event)
if (messageType == "EVENT")
{
string subscriptionId = jarr[1];
- string serializedEvent = jarr[2].dump();
- Event event;
- event.deserialize(message);
- eventHandler(subscriptionId, event);
+ Event event = Event::fromJson(jarr[2]);
+ eventHandler(subscriptionId, make_shared<Event>(event));
}
// Support other message types here, if necessary.