From 248474e6a5c75e5f7697de71515823623b624a68 Mon Sep 17 00:00:00 2001 From: Markus Westerlind Date: Sat, 17 Dec 2016 01:19:20 +0100 Subject: [PATCH] fix(http): Move the handler creation of the http server to a file --- examples/http.rs | 35 ++++++++--------------------------- examples/http_server.glu | 23 +++++++++++++++++++++++ 2 files changed, 31 insertions(+), 27 deletions(-) create mode 100644 examples/http_server.glu diff --git a/examples/http.rs b/examples/http.rs index 0f47a062f7..d9d1e6063d 100644 --- a/examples/http.rs +++ b/examples/http.rs @@ -8,7 +8,8 @@ extern crate collect_mac; extern crate hyper; use std::env; -use std::io::{stderr, Write}; +use std::fs::File; +use std::io::{stderr, Read, Write}; use std::marker::PhantomData; use self::hyper::method::Method; @@ -152,31 +153,11 @@ pub fn load(vm: &Thread) -> Result<()> { fn main() { let port = env::args().nth(1).map(|port| port.parse::().expect("port")).unwrap_or(80); - let expr = r#" - let prelude = import! "std/prelude.glu" - let { show } = prelude.show_Int - let string = import! "std/string.glu" - let { (<>) } = prelude.make_Monoid string.monoid - - let { (*>) } = prelude.make_Applicative prelude.applicative_IO - - let { - StatusCode, - handle, empty_response, get, get_request, path, listen, - applicative, alternative, monad } = import! "examples/http.glu" - - let { (*>), pure } = prelude.make_Applicative applicative - let { (<|>) } = prelude.make_Alternative alternative - let { (>>=) } = prelude.make_Monad monad - - let handler = - (get *> path "/" *> (pure { status = OK, body = "Hello World" })) <|> - (get *> path "/error" *> (pure { status = InternalServerError, body = "Error" })) - - \port -> - io.println ("Opened server on port " <> show port) *> - listen port handler - "#; + let mut expr = String::new(); + { + let mut file = File::open("examples/http_server.glu").unwrap(); + file.read_to_string(&mut expr).unwrap(); + } let thread = new_vm(); Compiler::new() @@ -185,7 +166,7 @@ fn main() { load(&thread).unwrap(); let (mut listen, _) = Compiler::new() - .run_expr:: IO<()>>>(&thread, "http_test", expr) + .run_expr:: IO<()>>>(&thread, "http_test", &expr) .unwrap_or_else(|err| panic!("{}", err)); listen.call(port) diff --git a/examples/http_server.glu b/examples/http_server.glu new file mode 100644 index 0000000000..b74767677c --- /dev/null +++ b/examples/http_server.glu @@ -0,0 +1,23 @@ +let prelude = import! "std/prelude.glu" +let { show } = prelude.show_Int +let string = import! "std/string.glu" +let { (<>) } = prelude.make_Monoid string.monoid + +let { (*>) } = prelude.make_Applicative prelude.applicative_IO + +let { + StatusCode, + handle, empty_response, get, get_request, path, listen, + applicative, alternative, monad } = import! "examples/http.glu" + +let { (*>), pure } = prelude.make_Applicative applicative +let { (<|>) } = prelude.make_Alternative alternative +let { (>>=) } = prelude.make_Monad monad + +let handler = + (get *> path "/" *> (pure { status = OK, body = "Hello World" })) <|> + (get *> path "/error" *> (pure { status = InternalServerError, body = "Error" })) + +\port -> + io.println ("Opened server on port " <> show port) *> + listen port handler