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 PublishMessageToTopic,
31 FetchTopicMessages,
33 RegisterService,
35 LookupService,
37 NodeInfo,
39 NodeDid,
41}
42
43impl Method {
44 pub fn as_str(&self) -> &str {
46 match self {
47 Method::ConnectPeerViaHttp => "connectPeerViaHttp",
48 Method::ConnectWithDid => "connectWithDid",
49 Method::ConnectWithSeed => "connectWithSeed",
50 Method::ListPeers => "listPeers",
51 Method::CreateOffer => "createOffer",
52 Method::AnswerOffer => "answerOffer",
53 Method::Disconnect => "disconnect",
54 Method::AcceptAnswer => "acceptAnswer",
55 Method::SendBackendMessage => "sendBackendMessage",
56 Method::PublishMessageToTopic => "publishMessageToTopic",
57 Method::FetchTopicMessages => "fetchTopicMessages",
58 Method::RegisterService => "registerService",
59 Method::LookupService => "lookupService",
60 Method::NodeInfo => "nodeInfo",
61 Method::NodeDid => "nodeDid",
62 }
63 }
64}
65
66#[allow(clippy::to_string_trait_impl)]
67impl ToString for Method {
68 fn to_string(&self) -> String {
69 self.as_str().to_owned()
70 }
71}
72
73impl TryFrom<&str> for Method {
74 type Error = crate::error::Error;
75
76 fn try_from(value: &str) -> Result<Self> {
77 Ok(match value {
78 "connectPeerViaHttp" => Self::ConnectPeerViaHttp,
79 "connectWithDid" => Self::ConnectWithDid,
80 "connectWithSeed" => Self::ConnectWithSeed,
81 "listPeers" => Self::ListPeers,
82 "createOffer" => Self::CreateOffer,
83 "answerOffer" => Self::AnswerOffer,
84 "disconnect" => Self::Disconnect,
85 "acceptAnswer" => Self::AcceptAnswer,
86 "sendBackendMessage" => Self::SendBackendMessage,
87 "publishMessageToTopic" => Method::PublishMessageToTopic,
88 "fetchTopicMessages" => Method::FetchTopicMessages,
89 "registerService" => Method::RegisterService,
90 "lookupService" => Method::LookupService,
91 "nodeInfo" => Method::NodeInfo,
92 "nodeDid" => Method::NodeDid,
93 _ => return Err(Error::InvalidMethod),
94 })
95 }
96}