From bc42d900d956f11307d14136f8e24d7cd793b012 Mon Sep 17 00:00:00 2001 From: Melonai Date: Thu, 7 May 2020 00:53:08 +0200 Subject: initial structure --- src/main.rs | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/schema.rs | 0 src/types.rs | 0 3 files changed, 59 insertions(+) create mode 100644 src/main.rs create mode 100644 src/schema.rs create mode 100644 src/types.rs (limited to 'src') diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..8e5e1fa --- /dev/null +++ b/src/main.rs @@ -0,0 +1,59 @@ +extern crate actix_web; +extern crate env_logger; +#[macro_use] extern crate serde_derive; + +use actix_web::{middleware, web, HttpServer, App, HttpResponse, HttpRequest}; +use listenfd::ListenFd; +use actix_web::web::Json; + +#[derive(Debug, Deserialize)] +struct UserData { + url: String +} + +#[derive(Debug, Serialize)] +struct UserResponse { + hash: String, + key: String +} + +async fn root() -> HttpResponse { + HttpResponse::Ok().body("Please make a POST request to / with the URL you want to shorten!") +} + +async fn shorten(req: HttpRequest, params: Json) -> HttpResponse { + //println!("{:?}", req.head()); + println!("{:?}", params.url); + HttpResponse::Ok().body("Right back at you!") +} + +async fn redirect() -> HttpResponse { + HttpResponse::TemporaryRedirect().header("Location", "http://google.com/").finish() +} + +#[actix_rt::main] +async fn main() -> std::io::Result<()> { + let mut lfd = ListenFd::from_env(); + std::env::set_var("RUST_LOG", "actix_web=info"); + env_logger::init(); + let mut server = HttpServer::new(|| { + App::new() + .wrap(middleware::Logger::default()) + .service( + web::resource("/") + .route(web::get().to(root)) + .route(web::post().to(shorten)) + ) + .service( + web::resource("/{hash}/{key}") + .route(web::get().to(redirect)) + ) + }); + server = if let Some(l) = lfd.take_tcp_listener(0).unwrap() { + server.listen(l)? + } else { + server.bind("localhost:3000")? + }; + + server.run().await +} diff --git a/src/schema.rs b/src/schema.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/types.rs b/src/types.rs new file mode 100644 index 0000000..e69de29 -- cgit 1.4.1