digitalocean_api/api/
floating_ip_action.rs1use super::floating_ip::FloatingIp;
2use super::Action;
3use crate::method::{Create, Get, List};
4use crate::request::{FloatingIpActionRequest, FloatingIpRequest};
5use crate::STATIC_URL_ERROR;
6
7const FLOATING_IP_ACTIONS_SEGMENT: &str = "actions";
8
9impl FloatingIpRequest<Get, FloatingIp> {
10 pub fn actions(mut self) -> FloatingIpActionRequest<List, Vec<Action>> {
12 self.url_mut()
13 .path_segments_mut()
14 .expect(STATIC_URL_ERROR)
15 .push(FLOATING_IP_ACTIONS_SEGMENT);
16
17 self.transmute()
18 }
19
20 pub fn action(mut self, id: usize) -> FloatingIpActionRequest<Get, Action> {
22 self.url_mut()
23 .path_segments_mut()
24 .expect(STATIC_URL_ERROR)
25 .push(FLOATING_IP_ACTIONS_SEGMENT)
26 .push(&id.to_string());
27
28 self.transmute()
29 }
30
31 pub fn unassign(mut self) -> FloatingIpActionRequest<Create, Action> {
33 self.url_mut()
34 .path_segments_mut()
35 .expect(STATIC_URL_ERROR)
36 .push(FLOATING_IP_ACTIONS_SEGMENT);
37
38 self.set_body(json!({
39 "type": "unassign",
40 }));
41
42 self.transmute()
43 }
44
45 pub fn assign(mut self, id: usize) -> FloatingIpActionRequest<Create, Action> {
47 self.url_mut()
48 .path_segments_mut()
49 .expect(STATIC_URL_ERROR)
50 .push(FLOATING_IP_ACTIONS_SEGMENT);
51
52 self.set_body(json!({
53 "type": "assign",
54 "droplet_id": id,
55 }));
56
57 self.transmute()
58 }
59}