1#![warn(missing_docs)]
3
4use super::error::Error;
5use super::error::Result;
6
7#[derive(Debug, Clone)]
9#[non_exhaustive]
10pub enum Method {
11 ConnectPeerViaHttp,
13 ConnectWithDid,
15 ConnectWithSeed,
17 ListPeers,
19 CreateOffer,
21 AnswerOffer,
23 AcceptAnswer,
25 Disconnect,
27 SendBackendMessage,
29 SendE2eHandshake,
31 SendE2eMessage,
33 PublishMessageToTopic,
35 FetchTopicMessages,
37 RegisterService,
39 LookupService,
41 NodeInfo,
43 NodeDid,
45}
46
47impl Method {
48 pub fn as_str(&self) -> &str {
50 match self {
51 Method::ConnectPeerViaHttp => "connectPeerViaHttp",
52 Method::ConnectWithDid => "connectWithDid",
53 Method::ConnectWithSeed => "connectWithSeed",
54 Method::ListPeers => "listPeers",
55 Method::CreateOffer => "createOffer",
56 Method::AnswerOffer => "answerOffer",
57 Method::Disconnect => "disconnect",
58 Method::AcceptAnswer => "acceptAnswer",
59 Method::SendBackendMessage => "sendBackendMessage",
60 Method::SendE2eHandshake => "sendE2eHandshake",
61 Method::SendE2eMessage => "sendE2eMessage",
62 Method::PublishMessageToTopic => "publishMessageToTopic",
63 Method::FetchTopicMessages => "fetchTopicMessages",
64 Method::RegisterService => "registerService",
65 Method::LookupService => "lookupService",
66 Method::NodeInfo => "nodeInfo",
67 Method::NodeDid => "nodeDid",
68 }
69 }
70}
71
72#[allow(clippy::to_string_trait_impl)]
73impl ToString for Method {
74 fn to_string(&self) -> String {
75 self.as_str().to_owned()
76 }
77}
78
79impl TryFrom<&str> for Method {
80 type Error = crate::error::Error;
81
82 fn try_from(value: &str) -> Result<Self> {
83 Ok(match value {
84 "connectPeerViaHttp" => Self::ConnectPeerViaHttp,
85 "connectWithDid" => Self::ConnectWithDid,
86 "connectWithSeed" => Self::ConnectWithSeed,
87 "listPeers" => Self::ListPeers,
88 "createOffer" => Self::CreateOffer,
89 "answerOffer" => Self::AnswerOffer,
90 "disconnect" => Self::Disconnect,
91 "acceptAnswer" => Self::AcceptAnswer,
92 "sendBackendMessage" => Self::SendBackendMessage,
93 "sendE2eHandshake" => Self::SendE2eHandshake,
94 "sendE2eMessage" => Self::SendE2eMessage,
95 "publishMessageToTopic" => Method::PublishMessageToTopic,
96 "fetchTopicMessages" => Method::FetchTopicMessages,
97 "registerService" => Method::RegisterService,
98 "lookupService" => Method::LookupService,
99 "nodeInfo" => Method::NodeInfo,
100 "nodeDid" => Method::NodeDid,
101 _ => return Err(Error::InvalidMethod),
102 })
103 }
104}