Skip to main content

devops_armory/cloud/hetzner/ssh_keys/
update.rs

1use std::time::Duration;
2
3use super::models::UpdateHetznerSSH;
4
5/// Update Hetzner ssh key info
6/// Token needs to be provided
7pub async fn update_hetzner_ssh_key(
8    token: String,
9    hetzner_ssh_id: i64,
10    hetzner_ssh_data: UpdateHetznerSSH
11) -> Result<(), std::io::Error> {
12
13    let client = awc::Client::default();
14    let request = client
15        .put(format!("https://api.hetzner.cloud/v1/ssh_keys/{hetzner_ssh_id}"))
16        .bearer_auth(&token)
17        .insert_header(("Content-Type", "application/json"))
18        .timeout(Duration::from_secs(30))
19        .send_json(&hetzner_ssh_data)
20        .await
21        .expect("Request Update ssh key could not been sent");
22
23    let mut req = request;
24    let req_status = req.status().as_u16();
25    let respone = req.body().await.unwrap_or_default();
26
27    match req_status {
28        200 => {
29            println!("Request has been successfull: Status: {:?}, {:?}", req_status, respone);
30        },
31        400 => {
32            println!("Bad Request. Check URL parameters or body: {:?}", respone);
33        },
34        403 => {
35            println!("You don't have access to perform such request: {:?}", respone);
36        }
37        404 => {
38            println!("Requested resource does not exists: {:?}", respone);
39        },
40        409 => {
41            println!("Requested resource already exists! {:?}", respone)
42        }
43        _ => {
44            println!("Request status mismatch. Check response: {:?}", respone);
45        }
46    }
47
48    Ok(())
49
50}