aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKatharina Fey <kookie@spacekookie.de>2018-06-09 13:18:44 +0200
committerKatharina Fey <kookie@spacekookie.de>2018-06-09 13:18:44 +0200
commit984b2e39500c2365ba654d2d593b8a50e7a95a74 (patch)
tree0a5fabbc3f8be1dbc94be6083db39df408115ed4
parent7ca8460f324387a28b991342cdae1ab1a3b70050 (diff)
Updating http documentation
-rw-r--r--lockchain-http/src/lib.rs62
-rw-r--r--lockchain-server/src/main.rs25
2 files changed, 52 insertions, 35 deletions
diff --git a/lockchain-http/src/lib.rs b/lockchain-http/src/lib.rs
index 2ad73ba..2a640c3 100644
--- a/lockchain-http/src/lib.rs
+++ b/lockchain-http/src/lib.rs
@@ -23,39 +23,57 @@ mod handlers;
mod model;
// pub use model::CarrierMessage;
-
use actix_web::{server, App};
use lockchain::traits::{Body, Vault};
use std::sync::{Arc, Mutex};
-/// Starts a new lockchain server for a certain payload type
-///
-/// The payload type is defined by the generic parameter provided and can
-/// either be just the encrypted message body, or the decrypted message
-/// body which is available via the lockchain-crypto crate
-///
/// Create a new lockchain-http server for a vault state
-///
-///
+///
+/// Lifetime wise, vault needs to long as long as the server, which is returned to
+/// call `run()` on. Make sure this is done in a thread, to not block your
+/// mainapplication context
+///
+/// Additionally, provide a address bind and port string to bind to.
+///
+/// ## Example
+///
+/// ```norun
+/// use lockchain_core::{traits::*, EncryptedBody};
+/// use lockchain_http::create_server;
+/// use lockchain_files::DataVault;
+///
+/// let server = create_server(
+/// "localhost",
+/// "8080",
+/// DataVault::<EncryptedBody>::new("name", "some-location"),
+/// ).run();
+/// ```
pub fn create_server<B: Body + 'static>(
+ bind: &str,
+ port: &str,
state: impl Vault<B> + 'static,
) -> server::HttpServer<App<Arc<Mutex<impl Vault<B> + 'static>>>> {
let state = Arc::new(Mutex::new(state));
server::new(move || {
- vec![App::with_state(Arc::clone(&state))
-
- .resource("/vault", |r| r.f(handlers::create_vault))
- .resource("/vault/{vaultid}", |r| r.f(handlers::update_vault))
- .resource("/vault/{vaultid}", |r| r.f(handlers::delete_vault))
- .resource("/vault/{vaultid}/records/{recordid}", |r| { r.f(handlers::get_record) })
- .resource("/vault/{vaultid}/records", |r| r.f(handlers::create_record))
- .resource("/vault/{vaultid}/records/{recordid}", |r| { r.f(handlers::update_record) })
- .resource("/vault/{vaultid}/records/{recordid}", |r| { r.f(handlers::delete_record) })
- .resource("/authenticate", |r| r.f(handlers::authenticate))
- .resource("/deauthenticate", |r| r.f(handlers::deauthenticate))
-
+ vec![
+ App::with_state(Arc::clone(&state))
+ .resource("/vault", |r| r.f(handlers::create_vault))
+ .resource("/vault/{vaultid}", |r| r.f(handlers::update_vault))
+ .resource("/vault/{vaultid}", |r| r.f(handlers::delete_vault))
+ .resource("/vault/{vaultid}/records/{recordid}", |r| {
+ r.f(handlers::get_record)
+ })
+ .resource("/vault/{vaultid}/records", |r| r.f(handlers::create_record))
+ .resource("/vault/{vaultid}/records/{recordid}", |r| {
+ r.f(handlers::update_record)
+ })
+ .resource("/vault/{vaultid}/records/{recordid}", |r| {
+ r.f(handlers::delete_record)
+ })
+ .resource("/authenticate", |r| r.f(handlers::authenticate))
+ .resource("/deauthenticate", |r| r.f(handlers::deauthenticate)),
]
- }).bind("localhost:8080")
+ }).bind(format!("{}:{}", bind, port))
.expect("Oh no!")
}
diff --git a/lockchain-server/src/main.rs b/lockchain-server/src/main.rs
index 748fcc0..089f490 100644
--- a/lockchain-server/src/main.rs
+++ b/lockchain-server/src/main.rs
@@ -1,20 +1,19 @@
-extern crate lockchain_core as lockchain;
-extern crate lockchain_files as files;
-extern crate lockchain_http as http;
+extern crate lockchain_core;
+extern crate lockchain_files;
+extern crate lockchain_http;
extern crate clap;
-use files::*;
-use http::*;
-use lockchain::traits::*;
-use lockchain::EncryptedBody;
-
-fn foo() -> DataVault<EncryptedBody> {
- DataVault::new("name", "location")
-}
-
fn main() {
- let server = create_server(foo());
+ use lockchain_core::{traits::*, EncryptedBody};
+ use lockchain_http::create_server;
+ use lockchain_files::DataVault;
+
+ let server = create_server(
+ "localhost",
+ "8080",
+ DataVault::<EncryptedBody>::new("name", "location"),
+ );
server.run();
println!("After the server died!");