main.rs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. extern crate futures;
  2. extern crate serde;
  3. extern crate smallvec;
  4. #[macro_use]
  5. extern crate serde_derive;
  6. extern crate serde_json;
  7. extern crate thruster;
  8. mod context;
  9. use futures::future;
  10. use context::{generate_context, Ctx};
  11. use thruster::{App, MiddlewareChain, MiddlewareReturnValue};
  12. #[derive(Serialize)]
  13. struct Message<'a> {
  14. message: &'a str,
  15. }
  16. fn json(mut context: Ctx, _chain: &MiddlewareChain<Ctx>) -> MiddlewareReturnValue<Ctx> {
  17. let json = Message {
  18. message: "Hello, World!",
  19. };
  20. let val = serde_json::to_string(&json).unwrap();
  21. context.body = val;
  22. context.set_header("Content-Type", "application/json");
  23. Box::new(future::ok(context))
  24. }
  25. fn plaintext(mut context: Ctx, _chain: &MiddlewareChain<Ctx>) -> MiddlewareReturnValue<Ctx> {
  26. let val = "Hello, world!".to_owned();
  27. context.body = val;
  28. context.set_header("Content-Type", "text/plain");
  29. Box::new(future::ok(context))
  30. }
  31. fn main() {
  32. println!("Starting server...");
  33. let mut app = App::create(generate_context);
  34. app.get("/json", vec![json]);
  35. app.get("/plaintext", vec![plaintext]);
  36. App::start_small_load_optimized(app, "0.0.0.0", 8080);
  37. }