]> git.proxmox.com Git - proxmox-backup.git/commitdiff
more cleanups
authorDietmar Maurer <dietmar@proxmox.com>
Thu, 6 Dec 2018 09:41:57 +0000 (10:41 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Thu, 6 Dec 2018 09:41:57 +0000 (10:41 +0100)
src/api/router.rs
src/api3.rs

index ca53e99637ee5852379a1b7e92323cfd99b79615..e9251b894b27a6589bd59b3d36ff56cea16caba6 100644 (file)
@@ -3,12 +3,13 @@ use failure::*;
 use crate::api::schema::*;
 use serde_json::{Value};
 use std::collections::HashMap;
+use std::sync::Arc;
 
 type ApiHandlerFn = fn(Value, &ApiMethod) -> Result<Value, Error>;
 
 pub struct ApiMethod {
     pub parameters: ObjectSchema,
-    pub returns: Schema,
+    pub returns: Arc<Schema>,
     pub handler: ApiHandlerFn,
 }
 
@@ -18,10 +19,17 @@ impl ApiMethod {
         Self {
             parameters,
             handler,
-            returns: Schema::Null,
+            returns: Arc::new(Schema::Null),
         }
     }
 
+    pub fn returns<S: Into<Arc<Schema>>>(mut self, schema: S) -> Self {
+
+        self.returns = schema.into();
+
+        self
+    }
+
 }
 
 pub enum SubRoute {
index de8d1414051597e7a489b6883cc32c1155060c19..4fb3667d6f90ee71c1a6fe3c83d7bd7c367b9728 100644 (file)
@@ -38,19 +38,17 @@ fn get_version(param: Value, _info: &ApiMethod) -> Result<Value, Error> {
     }))
 }
 
-
 pub fn router() -> Router {
 
     let route4 = Router::new()
-        .get(ApiMethod {
-            parameters: ObjectSchema::new("Another Endpoint."),
-            returns: Schema::Null,
-            handler: |param, _info| {
+        .get(ApiMethod::new(
+            |param, _info| {
                 println!("This is a clousure handler: {}", param);
 
                 Ok(json!(null))
-           },
-        });
+            },
+            ObjectSchema::new("Another Endpoint."))
+             .returns(Schema::Null));
 
 
     let nodeinfo = Router::new()
@@ -70,11 +68,9 @@ pub fn router() -> Router {
             ObjectSchema::new("Proxmox Backup Server API version.")));
 
      let route = Router::new()
-        .get(ApiMethod {
-            handler: get_version,
-            parameters: ObjectSchema::new("Directory index."),
-            returns: Schema::Null,
-        })
+        .get(ApiMethod::new(
+            get_version,
+            ObjectSchema::new("Directory index.")))
         .subdir("version", version)
         .subdir("nodes", nodes);