1use super::error::Error;
4use super::error::Result;
5
6#[derive(Debug, Clone)]
8#[non_exhaustive]
9pub enum Method {
10 ConnectPeerViaHttp,
12 ConnectWithDid,
14 ConnectWithSeed,
16 ListPeers,
18 CreateOffer,
20 AnswerOffer,
22 AcceptAnswer,
24 Disconnect,
26 SendBackendMessage,
28 SendE2eHandshake,
30 SendE2eMessage,
32 PublishMessageToTopic,
34 FetchTopicMessages,
36 RegisterService,
38 LookupService,
40 LookupOnlineNodes,
42 LookupOnionExits,
44 BuildOnionRoute,
46 NodeInfo,
48 PeerMeasurement,
50 ListPeerMeasurements,
52 NodeDid,
54}
55
56impl Method {
57 pub fn as_str(&self) -> &str {
59 match self {
60 Method::ConnectPeerViaHttp => "connectPeerViaHttp",
61 Method::ConnectWithDid => "connectWithDid",
62 Method::ConnectWithSeed => "connectWithSeed",
63 Method::ListPeers => "listPeers",
64 Method::CreateOffer => "createOffer",
65 Method::AnswerOffer => "answerOffer",
66 Method::Disconnect => "disconnect",
67 Method::AcceptAnswer => "acceptAnswer",
68 Method::SendBackendMessage => "sendBackendMessage",
69 Method::SendE2eHandshake => "sendE2eHandshake",
70 Method::SendE2eMessage => "sendE2eMessage",
71 Method::PublishMessageToTopic => "publishMessageToTopic",
72 Method::FetchTopicMessages => "fetchTopicMessages",
73 Method::RegisterService => "registerService",
74 Method::LookupService => "lookupService",
75 Method::LookupOnlineNodes => "lookupOnlineNodes",
76 Method::LookupOnionExits => "lookupOnionExits",
77 Method::BuildOnionRoute => "buildOnionRoute",
78 Method::NodeInfo => "nodeInfo",
79 Method::PeerMeasurement => "peerMeasurement",
80 Method::ListPeerMeasurements => "listPeerMeasurements",
81 Method::NodeDid => "nodeDid",
82 }
83 }
84}
85
86#[allow(clippy::to_string_trait_impl)]
87impl ToString for Method {
88 fn to_string(&self) -> String {
89 self.as_str().to_owned()
90 }
91}
92
93impl TryFrom<&str> for Method {
94 type Error = crate::error::Error;
95
96 fn try_from(value: &str) -> Result<Self> {
97 Ok(match value {
98 "connectPeerViaHttp" => Self::ConnectPeerViaHttp,
99 "connectWithDid" => Self::ConnectWithDid,
100 "connectWithSeed" => Self::ConnectWithSeed,
101 "listPeers" => Self::ListPeers,
102 "createOffer" => Self::CreateOffer,
103 "answerOffer" => Self::AnswerOffer,
104 "disconnect" => Self::Disconnect,
105 "acceptAnswer" => Self::AcceptAnswer,
106 "sendBackendMessage" => Self::SendBackendMessage,
107 "sendE2eHandshake" => Self::SendE2eHandshake,
108 "sendE2eMessage" => Self::SendE2eMessage,
109 "publishMessageToTopic" => Method::PublishMessageToTopic,
110 "fetchTopicMessages" => Method::FetchTopicMessages,
111 "registerService" => Method::RegisterService,
112 "lookupService" => Method::LookupService,
113 "lookupOnlineNodes" => Method::LookupOnlineNodes,
114 "lookupOnionExits" => Method::LookupOnionExits,
115 "buildOnionRoute" => Method::BuildOnionRoute,
116 "nodeInfo" => Method::NodeInfo,
117 "peerMeasurement" => Method::PeerMeasurement,
118 "listPeerMeasurements" => Method::ListPeerMeasurements,
119 "nodeDid" => Method::NodeDid,
120 _ => return Err(Error::InvalidMethod),
121 })
122 }
123}