ipfs_api_prelude/request/
pubsub.rs1use crate::request::ApiRequest;
10use crate::serde::ser::SerializeStruct;
11use multibase::{encode, Base};
12use serde::{Serialize, Serializer};
13
14pub struct PubsubLs;
15
16impl_skip_serialize!(PubsubLs);
17
18impl ApiRequest for PubsubLs {
19 const PATH: &'static str = "/pubsub/ls";
20}
21
22pub struct PubsubPeers<'a> {
23 pub topic: Option<&'a [u8]>,
24}
25
26impl<'a> Serialize for PubsubPeers<'a> {
27 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
28 where
29 S: Serializer,
30 {
31 let mut state = serializer.serialize_struct("PubsubPeers", 1)?;
32
33 if let Some(topic) = self.topic {
34 let topic = encode(Base::Base64Url, topic);
35
36 state.serialize_field("arg", &topic)?;
37 } else {
38 state.serialize_field("arg", &Option::<String>::None)?;
39 }
40
41 state.end()
42 }
43}
44
45impl<'a> ApiRequest for PubsubPeers<'a> {
46 const PATH: &'static str = "/pubsub/peers";
47}
48
49pub struct PubsubPub<'a> {
50 pub topic: &'a [u8],
51}
52
53impl<'a> Serialize for PubsubPub<'a> {
54 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
55 where
56 S: Serializer,
57 {
58 let mut state = serializer.serialize_struct("PubsubPub", 1)?;
59
60 let topic = encode(Base::Base64Url, self.topic);
61
62 state.serialize_field("arg", &topic)?;
63
64 state.end()
65 }
66}
67
68impl<'a> ApiRequest for PubsubPub<'a> {
69 const PATH: &'static str = "/pubsub/pub";
70}
71
72pub struct PubsubSub<'a> {
73 pub topic: &'a [u8],
74}
75
76impl<'a> Serialize for PubsubSub<'a> {
77 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
78 where
79 S: Serializer,
80 {
81 let mut state = serializer.serialize_struct("PubsubSub", 1)?;
82
83 let topic = encode(Base::Base64Url, self.topic);
84
85 state.serialize_field("arg", &topic)?;
86
87 state.end()
88 }
89}
90
91impl<'a> ApiRequest for PubsubSub<'a> {
92 const PATH: &'static str = "/pubsub/sub";
93}