]> git.proxmox.com Git - proxmox-backup.git/blob - src/api2.rs
api2/node/dns.rs: improve dns api
[proxmox-backup.git] / src / api2.rs
1 use failure::*;
2
3 use crate::api::schema::*;
4 use crate::api::router::*;
5 use serde_json::{json, Value};
6 use std::sync::Arc;
7
8 pub mod config;
9 pub mod admin;
10 pub mod node;
11 mod version;
12 mod subscription;
13
14 use lazy_static::lazy_static;
15 use crate::tools::common_regex;
16
17 // common schema definitions
18
19 lazy_static! {
20 pub static ref IP_FORMAT: Arc<ApiStringFormat> = ApiStringFormat::Pattern(&common_regex::IP_REGEX).into();
21
22
23 }
24
25
26
27 fn test_sync_api_handler(param: Value, _info: &ApiMethod) -> Result<Value, Error> {
28 println!("This is a test {}", param);
29
30 // let force: Option<bool> = Some(false);
31
32 //if let Some(force) = param.force {
33 //}
34
35 let _force = param["force"].as_bool()
36 .ok_or_else(|| format_err!("missing parameter 'force'"))?;
37
38 if let Some(_force) = param["force"].as_bool() {
39 }
40
41 Ok(json!(null))
42 }
43
44 pub fn router() -> Router {
45
46 let route4 = Router::new()
47 .get(ApiMethod::new(
48 |param, _info| {
49 println!("This is a clousure handler: {}", param);
50
51 Ok(json!(null))
52 },
53 ObjectSchema::new("Another Endpoint."))
54 .returns(Schema::Null));
55
56
57 let nodeinfo = Router::new()
58 .get(ApiMethod::new(
59 test_sync_api_handler,
60 ObjectSchema::new("This is a simple test.")
61 .optional("force", BooleanSchema::new("Test for boolean options")))
62 )
63 .subdir("subdir3", route4);
64
65 let nodes = Router::new()
66 .subdir("localhost", node::router());
67
68
69 let route = Router::new()
70 .get(ApiMethod::new(
71 |_,_| Ok(json!([
72 {"subdir": "config"},
73 {"subdir": "admin"},
74 {"subdir": "nodes"},
75 {"subdir": "subscription"},
76 {"subdir": "version"},
77 ])),
78 ObjectSchema::new("Directory index.")))
79 .subdir("admin", admin::router())
80 .subdir("config", config::router())
81 .subdir("nodes", nodes)
82 .subdir("subscription", subscription::router())
83 .subdir("version", version::router());
84
85 route
86 }