aboutsummaryrefslogtreecommitdiffstats
path: root/rust/src/lib.rs
diff options
context:
space:
mode:
authorBryan Newbold <bnewbold@robocracy.org>2018-05-15 10:34:16 -0700
committerBryan Newbold <bnewbold@robocracy.org>2018-05-15 10:34:18 -0700
commit0319c8f531139c2b4c49570a499894d7200760f5 (patch)
treee52a43ca477ea2701f541e42b67a455a1b98daf0 /rust/src/lib.rs
parent4c90242579c1e673ae47d63786503370c512f148 (diff)
downloadfatcat-0319c8f531139c2b4c49570a499894d7200760f5.tar.gz
fatcat-0319c8f531139c2b4c49570a499894d7200760f5.zip
implement HTTP header middleware
getting more familar with iron
Diffstat (limited to 'rust/src/lib.rs')
-rw-r--r--rust/src/lib.rs21
1 files changed, 18 insertions, 3 deletions
diff --git a/rust/src/lib.rs b/rust/src/lib.rs
index fbff6ab2..55040f0c 100644
--- a/rust/src/lib.rs
+++ b/rust/src/lib.rs
@@ -4,10 +4,10 @@ extern crate chrono;
extern crate diesel;
extern crate dotenv;
extern crate futures;
-extern crate hyper;
+#[macro_use] extern crate hyper;
extern crate swagger;
-#[macro_use]
-extern crate error_chain;
+#[macro_use] extern crate error_chain;
+extern crate iron;
pub mod api_server;
@@ -20,6 +20,9 @@ use diesel::pg::PgConnection;
use diesel::prelude::*;
use dotenv::dotenv;
use std::env;
+use hyper::header::Headers;
+use iron::{Request, Response};
+use iron::middleware::AfterMiddleware;
pub fn establish_connection() -> PgConnection {
dotenv().ok();
@@ -32,3 +35,15 @@ pub fn establish_connection() -> PgConnection {
pub fn server() -> Result<api_server::Server> {
Ok(api_server::Server {})
}
+
+/// HTTP header middleware
+header! { (XClacksOverhead, "X-Clacks-Overhead") => [String] }
+
+pub struct XClacksOverheadMiddleware;
+
+impl AfterMiddleware for XClacksOverheadMiddleware {
+ fn after(&self, _req: &mut Request, mut res: Response) -> iron::IronResult<Response> {
+ res.headers.set(XClacksOverhead("GNU aaronsw, jpb".to_owned()));
+ Ok(res)
+ }
+}