1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
extern crate serde_json;

use cloudflare::endpoints::workers::{DeleteRoute, ListRoutes};
use cloudflare::framework::apiclient::ApiClient;

use crate::http;
use crate::settings::global_user::GlobalUser;
use crate::terminal::message::{Message, StdOut};
pub fn list(zone_identifier: String, user: &GlobalUser) -> Result<(), failure::Error> {
    let client = http::cf_v4_client(user)?;

    let result = client.request(&ListRoutes {
        zone_identifier: &zone_identifier,
    });

    match result {
        Ok(success) => {
            let routes = success.result;
            println!("{}", serde_json::to_string(&routes)?);
        }

        Err(e) => failure::bail!("{}", http::format_error(e, None)),
    }
    Ok(())
}

pub fn delete(
    zone_identifier: String,
    user: &GlobalUser,
    route_id: &str,
) -> Result<(), failure::Error> {
    let client = http::cf_v4_client(user)?;

    let result = client.request(&DeleteRoute {
        zone_identifier: &zone_identifier,
        identifier: route_id,
    });

    match result {
        Ok(success) => {
            let msg = format!("Successfully deleted route with id {}", success.result.id);
            StdOut::success(&msg);
        }

        Err(e) => failure::bail!("{}", http::format_error(e, Some(&error_suggestions))),
    }
    Ok(())
}

fn error_suggestions(code: u16) -> &'static str {
    match code {
        10005 => "Confirm the route id by running `wrangler route list`",
        _ => "",
    }
}