docker_api/api/
network.rs1use crate::{
4 conn::{Headers, Payload},
5 models,
6 opts::{
7 ContainerConnectionOpts, ContainerDisconnectionOpts, NetworkCreateOpts, NetworkListOpts,
8 NetworkPruneOpts,
9 },
10 Result,
11};
12
13impl_api_ty!(Network => id);
14
15impl Network {
16 impl_api_ep! { net: Network, resp
17 Inspect -> &format!("/networks/{}", net.id), models::Network
18 Delete -> &format!("/networks/{}", net.id), ()
19 }
20
21 api_doc! { Network => Connect
22 |
23 pub async fn connect(&self, opts: &ContainerConnectionOpts) -> Result<()> {
25 self.docker
26 .post_string(
27 &format!("/networks/{}/connect", self.id),
28 Payload::Json(opts.serialize_vec()?),
29 Headers::none(),
30 )
31 .await
32 .map(|_| ())
33 }}
34
35 api_doc! { Network => Disconnect
36 |
37 pub async fn disconnect(&self, opts: &ContainerDisconnectionOpts) -> Result<()> {
39 self.docker
40 .post_string(
41 &format!("/networks/{}/disconnect", &self.id),
42 Payload::Json(opts.serialize_vec()?),
43 Headers::none(),
44 )
45 .await
46 .map(|_| ())
47 }}
48}
49
50impl Networks {
51 impl_api_ep! { __: Network, resp
52 List -> "/networks", models::Network
53 Prune -> "/networks/prune", models::NetworkPrune200Response
54 }
55
56 api_doc! { Network => Create
57 |
58 pub async fn create(&self, opts: &NetworkCreateOpts) -> Result<Network> {
60 self.docker
62 .post_json(
63 "/networks/create",
64 Payload::Json(opts.serialize_vec()?),
65 Headers::none(),
66 )
67 .await
68 .map(|resp: models::NetworkCreate201Response| {
69 Network::new(self.docker.clone(), resp.id.unwrap_or_default())
70 })
71 }}
72}