allow closure handlers

This commit is contained in:
Dietmar Maurer 2018-11-15 17:47:59 +01:00
parent cbbeff1a6d
commit fe476ce884
3 changed files with 8 additions and 10 deletions

View File

@ -8,7 +8,7 @@ pub struct ApiMethod {
pub description: &'static str,
pub parameters: Schema,
pub returns: Schema,
pub handler: fn(Value, &ApiMethod) -> Result<Value, Error>,
pub handler: Box<Fn(Value, &ApiMethod) -> Result<Value, Error> + Send + Sync>,
}
pub enum SubRoute {

View File

@ -173,7 +173,7 @@ fn handle_sync_api_request(
tokio::spawn(task);
*/
let res = (info.handler)(params, info)?;
let res = (*info.handler)(params, info)?;
Ok(res)

View File

@ -25,25 +25,23 @@ fn test_sync_api_handler(param: Value, _info: &ApiMethod) -> Result<Value, Error
}
fn test_subdir_api_handler(param: Value, _info: &ApiMethod) -> Result<Value, Error> {
println!("This is a subdir {}", param);
Ok(json!(null))
}
pub fn router() -> Router {
let route3 = Router::new()
.get(ApiMethod {
handler: test_subdir_api_handler,
description: "Another Endpoint.",
parameters: parameter!{},
returns: Schema::Null,
handler: Box::new(|param, _info| {
println!("This is a clousure handler: {}", param);
Ok(json!(null))
})
});
let route2 = Router::new()
.get(ApiMethod {
handler: test_sync_api_handler,
handler: Box::new(test_sync_api_handler),
description: "This is a simple test.",
parameters: parameter!{
force => Boolean!{