cleanup api3 structure
This commit is contained in:
		
							
								
								
									
										34
									
								
								src/api3.rs
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								src/api3.rs
									
									
									
									
									
								
							@ -1,11 +1,14 @@
 | 
			
		||||
use failure::*;
 | 
			
		||||
use std::collections::HashMap;
 | 
			
		||||
//use std::collections::HashMap;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
use crate::api::schema::*;
 | 
			
		||||
use crate::api::router::*;
 | 
			
		||||
use serde_json::{json, Value};
 | 
			
		||||
 | 
			
		||||
mod config;
 | 
			
		||||
mod version;
 | 
			
		||||
 | 
			
		||||
fn test_sync_api_handler(param: Value, _info: &ApiMethod) -> Result<Value, Error> {
 | 
			
		||||
    println!("This is a test {}", param);
 | 
			
		||||
 | 
			
		||||
@ -24,20 +27,6 @@ fn test_sync_api_handler(param: Value, _info: &ApiMethod) -> Result<Value, Error
 | 
			
		||||
    Ok(json!(null))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const PROXMOX_PKG_VERSION: &'static str = env!("PROXMOX_PKG_VERSION");
 | 
			
		||||
const PROXMOX_PKG_RELEASE: &'static str = env!("PROXMOX_PKG_RELEASE");
 | 
			
		||||
const PROXMOX_PKG_REPOID: &'static str = env!("PROXMOX_PKG_REPOID");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
fn get_version(param: Value, _info: &ApiMethod) -> Result<Value, Error> {
 | 
			
		||||
 | 
			
		||||
    Ok(json!({
 | 
			
		||||
        "version": PROXMOX_PKG_VERSION,
 | 
			
		||||
        "release": PROXMOX_PKG_RELEASE,
 | 
			
		||||
        "repoid": PROXMOX_PKG_REPOID
 | 
			
		||||
    }))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub fn router() -> Router {
 | 
			
		||||
 | 
			
		||||
    let route4 = Router::new()
 | 
			
		||||
@ -62,16 +51,17 @@ pub fn router() -> Router {
 | 
			
		||||
    let nodes = Router::new()
 | 
			
		||||
        .match_all("node", nodeinfo);
 | 
			
		||||
 | 
			
		||||
    let version = Router::new()
 | 
			
		||||
        .get(ApiMethod::new(
 | 
			
		||||
            get_version,
 | 
			
		||||
            ObjectSchema::new("Proxmox Backup Server API version.")));
 | 
			
		||||
 | 
			
		||||
     let route = Router::new()
 | 
			
		||||
    let route = Router::new()
 | 
			
		||||
        .get(ApiMethod::new(
 | 
			
		||||
            get_version,
 | 
			
		||||
            |_,_| Ok(json!([
 | 
			
		||||
                {"subdir": "config"},
 | 
			
		||||
                {"subdir": "version"},
 | 
			
		||||
                {"subdir": "nodes"}
 | 
			
		||||
            ])),
 | 
			
		||||
            ObjectSchema::new("Directory index.")))
 | 
			
		||||
        .subdir("version", version)
 | 
			
		||||
        .subdir("config", config::router())
 | 
			
		||||
        .subdir("version", version::router())
 | 
			
		||||
        .subdir("nodes", nodes);
 | 
			
		||||
 | 
			
		||||
    route
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										22
									
								
								src/api3/config.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/api3/config.rs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,22 @@
 | 
			
		||||
use failure::*;
 | 
			
		||||
use std::collections::HashMap;
 | 
			
		||||
 | 
			
		||||
use crate::api::schema::*;
 | 
			
		||||
use crate::api::router::*;
 | 
			
		||||
use serde_json::{json, Value};
 | 
			
		||||
 | 
			
		||||
mod datastore;
 | 
			
		||||
 | 
			
		||||
pub fn router() -> Router {
 | 
			
		||||
 | 
			
		||||
    let route = Router::new()
 | 
			
		||||
        .get(ApiMethod::new(
 | 
			
		||||
            |_,_| Ok(json!([
 | 
			
		||||
                {"subdir": "datastore"}
 | 
			
		||||
            ])),
 | 
			
		||||
            ObjectSchema::new("Directory index.")))
 | 
			
		||||
        .subdir("datastore", datastore::router());
 | 
			
		||||
   
 | 
			
		||||
 | 
			
		||||
    route
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								src/api3/config/datastore.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/api3/config/datastore.rs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,21 @@
 | 
			
		||||
use failure::*;
 | 
			
		||||
use std::collections::HashMap;
 | 
			
		||||
 | 
			
		||||
use crate::api::schema::*;
 | 
			
		||||
use crate::api::router::*;
 | 
			
		||||
use serde_json::{json, Value};
 | 
			
		||||
 | 
			
		||||
fn datastore_list(param: Value, _info: &ApiMethod) -> Result<Value, Error> {
 | 
			
		||||
    println!("This is a test {}", param);
 | 
			
		||||
    Ok(json!({}))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub fn router() -> Router {
 | 
			
		||||
 | 
			
		||||
    let route = Router::new()
 | 
			
		||||
        .get(ApiMethod::new(
 | 
			
		||||
            datastore_list,
 | 
			
		||||
            ObjectSchema::new("Directory index.")));
 | 
			
		||||
 | 
			
		||||
    route
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										28
									
								
								src/api3/version.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/api3/version.rs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,28 @@
 | 
			
		||||
use failure::*;
 | 
			
		||||
 | 
			
		||||
use crate::api::schema::*;
 | 
			
		||||
use crate::api::router::*;
 | 
			
		||||
use serde_json::{json, Value};
 | 
			
		||||
 | 
			
		||||
const PROXMOX_PKG_VERSION: &'static str = env!("PROXMOX_PKG_VERSION");
 | 
			
		||||
const PROXMOX_PKG_RELEASE: &'static str = env!("PROXMOX_PKG_RELEASE");
 | 
			
		||||
const PROXMOX_PKG_REPOID: &'static str = env!("PROXMOX_PKG_REPOID");
 | 
			
		||||
 | 
			
		||||
fn get_version(_param: Value, _info: &ApiMethod) -> Result<Value, Error> {
 | 
			
		||||
 | 
			
		||||
    Ok(json!({
 | 
			
		||||
        "version": PROXMOX_PKG_VERSION,
 | 
			
		||||
        "release": PROXMOX_PKG_RELEASE,
 | 
			
		||||
        "repoid": PROXMOX_PKG_REPOID
 | 
			
		||||
    }))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub fn router() -> Router {
 | 
			
		||||
 | 
			
		||||
    let route = Router::new()
 | 
			
		||||
        .get(ApiMethod::new(
 | 
			
		||||
            get_version,
 | 
			
		||||
            ObjectSchema::new("Proxmox Backup Server API version.")));
 | 
			
		||||
 | 
			
		||||
    route
 | 
			
		||||
}
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
use failure::*;
 | 
			
		||||
 | 
			
		||||
use std::fs::{File, OpenOptions};
 | 
			
		||||
use std::fs::{OpenOptions};
 | 
			
		||||
use std::io::Read;
 | 
			
		||||
 | 
			
		||||
//use std::sync::Arc;
 | 
			
		||||
@ -32,23 +32,23 @@ fn init() -> SectionConfig {
 | 
			
		||||
    config
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const datastore_cfg: &str = "/etc/proxmox-backup/datastore.cfg";
 | 
			
		||||
const DATASTORE_CFG_FILENAME: &str = "/etc/proxmox-backup/datastore.cfg";
 | 
			
		||||
 | 
			
		||||
fn config() -> Result<SectionConfigData, Error> {
 | 
			
		||||
 | 
			
		||||
    let mut file = match OpenOptions::new()
 | 
			
		||||
        .create(true)
 | 
			
		||||
        .write(true)
 | 
			
		||||
        .open(datastore_cfg) {
 | 
			
		||||
        .open(DATASTORE_CFG_FILENAME) {
 | 
			
		||||
            Ok(file) => file,
 | 
			
		||||
            Err(err) => bail!("Unable to open '{}' - {}",
 | 
			
		||||
                              datastore_cfg, err),
 | 
			
		||||
                              DATASTORE_CFG_FILENAME, err),
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
    let mut contents = String::new();
 | 
			
		||||
    file.read_to_string(&mut contents).unwrap();
 | 
			
		||||
 | 
			
		||||
    CONFIG.parse(datastore_cfg, &contents)
 | 
			
		||||
    CONFIG.parse(DATASTORE_CFG_FILENAME, &contents)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -49,4 +49,3 @@ pub mod storage {
 | 
			
		||||
pub mod getopts;
 | 
			
		||||
 | 
			
		||||
pub mod api3;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user