diff --git a/status/signals.nim b/status/signals.nim deleted file mode 100644 index 45c206e..0000000 --- a/status/signals.nim +++ /dev/null @@ -1,35 +0,0 @@ -import json, json_serialization, strutils -import signals/[base, chronicles_logs, community, discovery_summary, envelope, expired, mailserver, messages, peerstats, signal_type, stats, wallet, whisper_filter, keycard] - -export base, chronicles_logs, community, discovery_summary, envelope, expired, mailserver, messages, peerstats, signal_type, stats, wallet, whisper_filter - -proc decode*(jsonSignal: JsonNode): Signal = - let signalString = jsonSignal{"type"}.getStr - var signalType: SignalType - try: - signalType = parseEnum[SignalType](signalString) - except: - raise newException(ValueError, "Unknown signal received: " & signalString) - - result = case signalType: - of SignalType.Message: MessageSignal.fromEvent(jsonSignal, true) - of SignalType.EnvelopeSent: EnvelopeSentSignal.fromEvent(jsonSignal) - of SignalType.EnvelopeExpired: EnvelopeExpiredSignal.fromEvent(jsonSignal) - of SignalType.WhisperFilterAdded: WhisperFilterSignal.fromEvent(jsonSignal) - of SignalType.Wallet: WalletSignal.fromEvent(jsonSignal) - of SignalType.NodeLogin: Json.decode($jsonSignal, NodeSignal) - of SignalType.PeerStats: PeerStatsSignal.fromEvent(jsonSignal) - of SignalType.DiscoverySummary: DiscoverySummarySignal.fromEvent(jsonSignal) - of SignalType.MailserverRequestCompleted: MailserverRequestCompletedSignal.fromEvent(jsonSignal) - of SignalType.MailserverRequestExpired: MailserverRequestExpiredSignal.fromEvent(jsonSignal) - of SignalType.CommunityFound: CommunitySignal.fromEvent(jsonSignal) - of SignalType.Stats: StatsSignal.fromEvent(jsonSignal) - of SignalType.ChroniclesLogs: ChroniclesLogsSignal.fromEvent(jsonSignal) - of SignalType.HistoryRequestCompleted: HistoryRequestCompletedSignal.fromEvent(jsonSignal) - of SignalType.HistoryRequestStarted: HistoryRequestStartedSignal.fromEvent(jsonSignal) - of SignalType.HistoryRequestFailed: HistoryRequestFailedSignal.fromEvent(jsonSignal) - of SignalType.HistoryRequestBatchProcessed: HistoryRequestBatchProcessedSignal.fromEvent(jsonSignal) - of SignalType.KeycardConnected: KeycardConnectedSignal.fromEvent(jsonSignal) - else: Signal() - - result.signalType = signalType diff --git a/status/signals/base.nim b/status/signals/base.nim deleted file mode 100644 index f2a0e5c..0000000 --- a/status/signals/base.nim +++ /dev/null @@ -1,16 +0,0 @@ -import json -import json_serialization -import signal_type -import ../status -import ../types/rpc_response - -import ../../eventemitter - -export signal_type - -type Signal* = ref object of Args - signalType* {.serializedFieldName("type").}: SignalType - signalTypeStr*: string - -type NodeSignal* = ref object of Signal - event*: StatusGoError diff --git a/status/signals/chronicles_logs.nim b/status/signals/chronicles_logs.nim deleted file mode 100644 index 22d718e..0000000 --- a/status/signals/chronicles_logs.nim +++ /dev/null @@ -1,12 +0,0 @@ -import json -import base -import signal_type - -type ChroniclesLogsSignal* = ref object of Signal - content*: string - -proc fromEvent*(T: type ChroniclesLogsSignal, jsonSignal: JsonNode): ChroniclesLogsSignal = - result = ChroniclesLogsSignal() - result.signalType = SignalType.ChroniclesLogs - if jsonSignal["event"].kind != JNull: - result.content = jsonSignal["event"].getStr() diff --git a/status/signals/community.nim b/status/signals/community.nim deleted file mode 100644 index ac7f499..0000000 --- a/status/signals/community.nim +++ /dev/null @@ -1,14 +0,0 @@ -import json - -import base - -import status/types/community -import signal_type - -type CommunitySignal* = ref object of Signal - community*: Community - -proc fromEvent*(T: type CommunitySignal, event: JsonNode): CommunitySignal = - result = CommunitySignal() - result.signalType = SignalType.CommunityFound - result.community = event["event"].toCommunity() diff --git a/status/signals/discovery_summary.nim b/status/signals/discovery_summary.nim deleted file mode 100644 index d8ae686..0000000 --- a/status/signals/discovery_summary.nim +++ /dev/null @@ -1,14 +0,0 @@ -import json - -import base -import signal_type - -type DiscoverySummarySignal* = ref object of Signal - enodes*: seq[string] - -proc fromEvent*(T: type DiscoverySummarySignal, jsonSignal: JsonNode): DiscoverySummarySignal = - result = DiscoverySummarySignal() - result.signalType = SignalType.DiscoverySummary - if jsonSignal["event"].kind != JNull: - for discoveryItem in jsonSignal["event"]: - result.enodes.add(discoveryItem["enode"].getStr) diff --git a/status/signals/envelope.nim b/status/signals/envelope.nim deleted file mode 100644 index 01f6e8f..0000000 --- a/status/signals/envelope.nim +++ /dev/null @@ -1,15 +0,0 @@ -import json - -import base -import signal_type - -type EnvelopeSentSignal* = ref object of Signal - messageIds*: seq[string] - -proc fromEvent*(T: type EnvelopeSentSignal, jsonSignal: JsonNode): EnvelopeSentSignal = - result = EnvelopeSentSignal() - result.signalType = SignalType.EnvelopeSent - if jsonSignal["event"].kind != JNull and jsonSignal["event"].hasKey("ids") and jsonSignal["event"]["ids"].kind != JNull: - for messageId in jsonSignal["event"]["ids"]: - result.messageIds.add(messageId.getStr) - \ No newline at end of file diff --git a/status/signals/expired.nim b/status/signals/expired.nim deleted file mode 100644 index a5d6f4e..0000000 --- a/status/signals/expired.nim +++ /dev/null @@ -1,15 +0,0 @@ -import json - -import base -import signal_type - -type EnvelopeExpiredSignal* = ref object of Signal - messageIds*: seq[string] - -proc fromEvent*(T: type EnvelopeExpiredSignal, jsonSignal: JsonNode): EnvelopeExpiredSignal = - result = EnvelopeExpiredSignal() - result.signalType = SignalType.EnvelopeExpired - if jsonSignal["event"].kind != JNull and jsonSignal["event"].hasKey("ids") and jsonSignal["event"]["ids"].kind != JNull: - for messageId in jsonSignal["event"]["ids"]: - result.messageIds.add(messageId.getStr) - \ No newline at end of file diff --git a/status/signals/keycard.nim b/status/signals/keycard.nim deleted file mode 100644 index 512caf6..0000000 --- a/status/signals/keycard.nim +++ /dev/null @@ -1,11 +0,0 @@ -import json - -import base -import signal_type - -type KeycardConnectedSignal* = ref object of Signal - started*: string - -proc fromEvent*(T: type KeycardConnectedSignal, event: JsonNode): KeycardConnectedSignal = - result = KeycardConnectedSignal() - result.started = event["event"].getStr() diff --git a/status/signals/mailserver.nim b/status/signals/mailserver.nim deleted file mode 100644 index 372e25b..0000000 --- a/status/signals/mailserver.nim +++ /dev/null @@ -1,72 +0,0 @@ -import json - -import base -import signal_type - -type MailserverRequestCompletedSignal* = ref object of Signal - requestID*: string - lastEnvelopeHash*: string - cursor*: string - errorMessage*: string - error*: bool - -type MailserverRequestExpiredSignal* = ref object of Signal - # TODO - -type HistoryRequestStartedSignal* = ref object of Signal - requestId*: string - numBatches*: int - -type HistoryRequestBatchProcessedSignal* = ref object of Signal - requestId*: string - batchIndex*: int - numBatches*: int - -type HistoryRequestCompletedSignal* = ref object of Signal - requestId*: string - -type HistoryRequestFailedSignal* = ref object of Signal - requestId*: string - errorMessage*: string - error*: bool - -proc fromEvent*(T: type MailserverRequestCompletedSignal, jsonSignal: JsonNode): MailserverRequestCompletedSignal = - result = MailserverRequestCompletedSignal() - result.signalType = SignalType.MailserverRequestCompleted - if jsonSignal["event"].kind != JNull: - result.requestID = jsonSignal["event"]{"requestID"}.getStr() - result.lastEnvelopeHash = jsonSignal["event"]{"lastEnvelopeHash"}.getStr() - result.cursor = jsonSignal["event"]{"cursor"}.getStr() - result.errorMessage = jsonSignal["event"]{"errorMessage"}.getStr() - result.error = result.errorMessage != "" - -proc fromEvent*(T: type MailserverRequestExpiredSignal, jsonSignal: JsonNode): MailserverRequestExpiredSignal = - # TODO: parse signal - result = MailserverRequestExpiredSignal() - result.signalType = SignalType.MailserverRequestExpired - -proc fromEvent*(T: type HistoryRequestStartedSignal, jsonSignal: JsonNode): HistoryRequestStartedSignal = - result = HistoryRequestStartedSignal() - result.signalType = SignalType.HistoryRequestStarted - result.requestId = jsonSignal["event"]{"requestId"}.getStr() - result.numBatches = jsonSIgnal["event"]{"numBatches"}.getInt() - -proc fromEvent*(T: type HistoryRequestBatchProcessedSignal, jsonSignal: JsonNode): HistoryRequestBatchProcessedSignal = - result = HistoryRequestBatchProcessedSignal() - result.signalType = SignalType.HistoryRequestBatchProcessed - result.requestId = jsonSignal["event"]{"requestId"}.getStr() - result.batchIndex = jsonSIgnal["event"]{"batchIndex"}.getInt() - result.numBatches = jsonSIgnal["event"]{"numBatches"}.getInt() - -proc fromEvent*(T: type HistoryRequestCompletedSignal, jsonSignal: JsonNode): HistoryRequestCompletedSignal = - result = HistoryRequestCompletedSignal() - result.signalType = SignalType.HistoryRequestCompleted - result.requestId = jsonSignal["event"]{"requestId"}.getStr() - -proc fromEvent*(T: type HistoryRequestFailedSignal, jsonSignal: JsonNode): HistoryRequestFailedSignal = - result = HistoryRequestFailedSignal() - result.signalType = SignalType.HistoryRequestStarted - result.requestId = jsonSignal["event"]{"requestId"}.getStr() - if jsonSignal["event"].kind != JNull: - result.errorMessage = jsonSignal["event"]{"errorMessage"}.getStr() - result.error = result.errorMessage != "" diff --git a/status/signals/messages.nim b/status/signals/messages.nim deleted file mode 100644 index bdc0fcf..0000000 --- a/status/signals/messages.nim +++ /dev/null @@ -1,95 +0,0 @@ -import json - -import base - -import status/types/[message, chat, community, profile, installation, - activity_center_notification, status_update, removed_message] - -type MessageSignal* = ref object of Signal - messages*: seq[Message] - pinnedMessages*: seq[Message] - chats*: seq[Chat] - contacts*: seq[Profile] - installations*: seq[Installation] - emojiReactions*: seq[Reaction] - communities*: seq[Community] - membershipRequests*: seq[CommunityMembershipRequest] - activityCenterNotification*: seq[ActivityCenterNotification] - statusUpdates*: seq[StatusUpdate] - deletedMessages*: seq[RemovedMessage] - -proc fromEvent*(T: type MessageSignal, event: JsonNode, logMessage: bool = false): MessageSignal = - var signal:MessageSignal = MessageSignal() - signal.messages = @[] - signal.contacts = @[] - - if event["event"]{"contacts"} != nil: - for jsonContact in event["event"]["contacts"]: - signal.contacts.add(jsonContact.toProfile()) - - var chatsWithMentions: seq[string] = @[] - - if event["event"]{"messages"} != nil: - for jsonMsg in event["event"]["messages"]: - var message = jsonMsg.toMessage(logMessage) - if message.hasMention: - chatsWithMentions.add(message.chatId) - signal.messages.add(message) - - if event["event"]{"chats"} != nil: - for jsonChat in event["event"]["chats"]: - var chat = jsonChat.toChat - if chatsWithMentions.contains(chat.id): - chat.mentionsCount.inc - signal.chats.add(chat) - - if event["event"]{"statusUpdates"} != nil: - for jsonStatusUpdate in event["event"]["statusUpdates"]: - var statusUpdate = jsonStatusUpdate.toStatusUpdate - signal.statusUpdates.add(statusUpdate) - - if event["event"]{"installations"} != nil: - for jsonInstallation in event["event"]["installations"]: - signal.installations.add(jsonInstallation.toInstallation) - - if event["event"]{"emojiReactions"} != nil: - for jsonReaction in event["event"]["emojiReactions"]: - signal.emojiReactions.add(jsonReaction.toReaction) - - if event["event"]{"communities"} != nil: - for jsonCommunity in event["event"]["communities"]: - signal.communities.add(jsonCommunity.toCommunity) - - if event["event"]{"requestsToJoinCommunity"} != nil: - for jsonCommunity in event["event"]["requestsToJoinCommunity"]: - signal.membershipRequests.add(jsonCommunity.toCommunityMembershipRequest) - - if event["event"]{"removedMessages"} != nil: - for jsonRemovedMessage in event["event"]["removedMessages"]: - signal.deletedMessages.add(jsonRemovedMessage.toRemovedMessage) - - if event["event"]{"activityCenterNotifications"} != nil: - for jsonNotification in event["event"]["activityCenterNotifications"]: - signal.activityCenterNotification.add(jsonNotification.toActivityCenterNotification()) - - if event["event"]{"pinMessages"} != nil: - for jsonPinnedMessage in event["event"]["pinMessages"]: - var contentType: ContentType - try: - contentType = ContentType(jsonPinnedMessage{"contentType"}.getInt) - except: - contentType = ContentType.Message - signal.pinnedMessages.add(Message( - id: jsonPinnedMessage{"message_id"}.getStr, - chatId: jsonPinnedMessage{"chat_id"}.getStr, - localChatId: jsonPinnedMessage{"localChatId"}.getStr, - pinnedBy: jsonPinnedMessage{"from"}.getStr, - identicon: jsonPinnedMessage{"identicon"}.getStr, - alias: jsonPinnedMessage{"alias"}.getStr, - clock: jsonPinnedMessage{"clock"}.getInt, - isPinned: jsonPinnedMessage{"pinned"}.getBool, - contentType: contentType - )) - - result = signal - diff --git a/status/signals/peerstats.nim b/status/signals/peerstats.nim deleted file mode 100644 index fc59743..0000000 --- a/status/signals/peerstats.nim +++ /dev/null @@ -1,14 +0,0 @@ -import json -import base -import signal_type - -type PeerStatsSignal* = ref object of Signal - peers*: seq[string] - -proc fromEvent*(T: type PeerStatsSignal, jsonSignal: JsonNode): PeerStatsSignal = - result = PeerStatsSignal() - result.signalType = SignalType.PeerStats - if jsonSignal["event"].kind != JNull: - for (node, protocols) in jsonSignal["event"]["peers"].pairs(): - if protocols.getElems.len != 0: - result.peers.add(node) diff --git a/status/signals/signal_type.nim b/status/signals/signal_type.nim deleted file mode 100644 index ba550f5..0000000 --- a/status/signals/signal_type.nim +++ /dev/null @@ -1,33 +0,0 @@ -{.used.} - -type SignalType* {.pure.} = enum - Message = "messages.new" - Wallet = "wallet" - NodeReady = "node.ready" - NodeCrashed = "node.crashed" - NodeStarted = "node.started" - NodeStopped = "node.stopped" - NodeLogin = "node.login" - EnvelopeSent = "envelope.sent" - EnvelopeExpired = "envelope.expired" - MailserverRequestCompleted = "mailserver.request.completed" - MailserverRequestExpired = "mailserver.request.expired" - DiscoveryStarted = "discovery.started" - DiscoveryStopped = "discovery.stopped" - DiscoverySummary = "discovery.summary" - SubscriptionsData = "subscriptions.data" - SubscriptionsError = "subscriptions.error" - WhisperFilterAdded = "whisper.filter.added" - CommunityFound = "community.found" - PeerStats = "wakuv2.peerstats" - Stats = "stats" - ChroniclesLogs = "chronicles-log" - HistoryRequestStarted = "history.request.started" - HistoryRequestCompleted = "history.request.completed" - HistoryRequestFailed = "history.request.failed" - HistoryRequestBatchProcessed = "history.request.batch.processed" - KeycardConnected = "keycard.connected" - Unknown - -proc event*(self:SignalType):string = - result = "signal:" & $self diff --git a/status/signals/stats.nim b/status/signals/stats.nim deleted file mode 100644 index f28a983..0000000 --- a/status/signals/stats.nim +++ /dev/null @@ -1,22 +0,0 @@ -import json - -import base -import signal_type - -type Stats* = object - uploadRate*: uint64 - downloadRate*: uint64 - -type StatsSignal* = ref object of Signal - stats*: Stats - -proc toStats(jsonMsg: JsonNode): Stats = - result = Stats( - uploadRate: uint64(jsonMsg{"uploadRate"}.getBiggestInt()), - downloadRate: uint64(jsonMsg{"downloadRate"}.getBiggestInt()) - ) - -proc fromEvent*(T: type StatsSignal, event: JsonNode): StatsSignal = - result = StatsSignal() - result.signalType = SignalType.Stats - result.stats = event["event"].toStats diff --git a/status/signals/wallet.nim b/status/signals/wallet.nim deleted file mode 100644 index 3a8c25f..0000000 --- a/status/signals/wallet.nim +++ /dev/null @@ -1,28 +0,0 @@ -import json - -import base -import signal_type - -type WalletSignal* = ref object of Signal - content*: string - eventType*: string - blockNumber*: int - accounts*: seq[string] - baseFeePerGas*: string - # newTransactions*: ??? - erc20*: bool - -proc fromEvent*(T: type WalletSignal, jsonSignal: JsonNode): WalletSignal = - result = WalletSignal() - result.signalType = SignalType.Wallet - result.content = $jsonSignal - if jsonSignal["event"].kind != JNull: - result.eventType = jsonSignal["event"]["type"].getStr - result.blockNumber = jsonSignal["event"]{"blockNumber"}.getInt - result.baseFeePerGas = jsonSignal["event"]{"baseFeePerGas"}.getStr - result.erc20 = jsonSignal["event"]{"erc20"}.getBool - result.accounts = @[] - if jsonSignal["event"]["accounts"].kind != JNull: - for account in jsonSignal["event"]["accounts"]: - result.accounts.add(account.getStr) - \ No newline at end of file diff --git a/status/signals/whisper_filter.nim b/status/signals/whisper_filter.nim deleted file mode 100644 index 2581663..0000000 --- a/status/signals/whisper_filter.nim +++ /dev/null @@ -1,29 +0,0 @@ -import json - -import base - -type Filter* = object - chatId*: string - symKeyId*: string - listen*: bool - filterId*: string - identity*: string - topic*: string - -type WhisperFilterSignal* = ref object of Signal - filters*: seq[Filter] - -proc toFilter(jsonMsg: JsonNode): Filter = - result = Filter( - chatId: jsonMsg{"chatId"}.getStr, - symKeyId: jsonMsg{"symKeyId"}.getStr, - listen: jsonMsg{"listen"}.getBool, - filterId: jsonMsg{"filterId"}.getStr, - identity: jsonMsg{"identity"}.getStr, - topic: jsonMsg{"topic"}.getStr, - ) - -proc fromEvent*(T: type WhisperFilterSignal, event: JsonNode): WhisperFilterSignal = - if event["event"]{"filters"} != nil: - for jsonMsg in event["event"]["filters"]: - result.filters.add(jsonMsg.toFilter)