decthings_api/client/rpc/image/
mod.rs1mod request;
2mod response;
3
4use crate::client::StateModification;
5
6pub use request::*;
7pub use response::*;
8
9pub struct ImageRpc {
10 rpc: crate::client::DecthingsClientRpc,
11}
12
13impl ImageRpc {
14 pub(crate) fn new(rpc: crate::client::DecthingsClientRpc) -> Self {
15 Self { rpc }
16 }
17
18 pub async fn create_repository(
19 &self,
20 params: CreateRepositoryParams<'_>,
21 ) -> Result<CreateRepositoryResult, crate::client::DecthingsRpcError<CreateRepositoryError>>
22 {
23 let (tx, rx) = tokio::sync::oneshot::channel();
24 self.rpc
25 .raw_method_call::<_, _, &[u8]>(
26 "Image",
27 "createRepository",
28 params,
29 &[],
30 crate::client::RpcProtocol::Http,
31 |x| {
32 tx.send(x).ok();
33 StateModification::empty()
34 },
35 )
36 .await;
37 rx.await
38 .unwrap()
39 .map_err(crate::client::DecthingsRpcError::Request)
40 .and_then(|x| {
41 let res: super::Response<CreateRepositoryResult, CreateRepositoryError> =
42 serde_json::from_slice(&x.0)?;
43 match res {
44 super::Response::Result(val) => Ok(val),
45 super::Response::Error(val) => Err(crate::client::DecthingsRpcError::Rpc(val)),
46 }
47 })
48 }
49
50 pub async fn update_repository(
51 &self,
52 params: UpdateRepositoryParams<'_>,
53 ) -> Result<UpdateRepositoryResult, crate::client::DecthingsRpcError<UpdateRepositoryError>>
54 {
55 let (tx, rx) = tokio::sync::oneshot::channel();
56 self.rpc
57 .raw_method_call::<_, _, &[u8]>(
58 "Image",
59 "updateRepository",
60 params,
61 &[],
62 crate::client::RpcProtocol::Http,
63 |x| {
64 tx.send(x).ok();
65 StateModification::empty()
66 },
67 )
68 .await;
69 rx.await
70 .unwrap()
71 .map_err(crate::client::DecthingsRpcError::Request)
72 .and_then(|x| {
73 let res: super::Response<UpdateRepositoryResult, UpdateRepositoryError> =
74 serde_json::from_slice(&x.0)?;
75 match res {
76 super::Response::Result(val) => Ok(val),
77 super::Response::Error(val) => Err(crate::client::DecthingsRpcError::Rpc(val)),
78 }
79 })
80 }
81
82 pub async fn delete_repository(
83 &self,
84 params: DeleteRepositoryParams<'_>,
85 ) -> Result<DeleteRepositoryResult, crate::client::DecthingsRpcError<DeleteRepositoryError>>
86 {
87 let (tx, rx) = tokio::sync::oneshot::channel();
88 self.rpc
89 .raw_method_call::<_, _, &[u8]>(
90 "Image",
91 "deleteRepository",
92 params,
93 &[],
94 crate::client::RpcProtocol::Http,
95 |x| {
96 tx.send(x).ok();
97 StateModification::empty()
98 },
99 )
100 .await;
101 rx.await
102 .unwrap()
103 .map_err(crate::client::DecthingsRpcError::Request)
104 .and_then(|x| {
105 let res: super::Response<DeleteRepositoryResult, DeleteRepositoryError> =
106 serde_json::from_slice(&x.0)?;
107 match res {
108 super::Response::Result(val) => Ok(val),
109 super::Response::Error(val) => Err(crate::client::DecthingsRpcError::Rpc(val)),
110 }
111 })
112 }
113
114 pub async fn get_repositories(
115 &self,
116 params: GetRepositoriesParams<'_, impl AsRef<str>>,
117 ) -> Result<GetRepositoriesResult, crate::client::DecthingsRpcError<GetRepositoriesError>> {
118 let (tx, rx) = tokio::sync::oneshot::channel();
119 self.rpc
120 .raw_method_call::<_, _, &[u8]>(
121 "Image",
122 "getRepositories",
123 params,
124 &[],
125 crate::client::RpcProtocol::Http,
126 |x| {
127 tx.send(x).ok();
128 StateModification::empty()
129 },
130 )
131 .await;
132 rx.await
133 .unwrap()
134 .map_err(crate::client::DecthingsRpcError::Request)
135 .and_then(|x| {
136 let res: super::Response<GetRepositoriesResult, GetRepositoriesError> =
137 serde_json::from_slice(&x.0)?;
138 match res {
139 super::Response::Result(val) => Ok(val),
140 super::Response::Error(val) => Err(crate::client::DecthingsRpcError::Rpc(val)),
141 }
142 })
143 }
144}