diff options
| author | Melonai <einebeere@gmail.com> | 2020-05-07 00:53:08 +0200 |
|---|---|---|
| committer | Melonai <einebeere@gmail.com> | 2020-05-07 00:53:08 +0200 |
| commit | bc42d900d956f11307d14136f8e24d7cd793b012 (patch) | |
| tree | b7e1e29f2972f26a5a5397083541312ca98a6c1f /src | |
| download | shorest-bc42d900d956f11307d14136f8e24d7cd793b012.tar.zst shorest-bc42d900d956f11307d14136f8e24d7cd793b012.zip | |
initial structure
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.rs | 59 | ||||
| -rw-r--r-- | src/schema.rs | 0 | ||||
| -rw-r--r-- | src/types.rs | 0 |
3 files changed, 59 insertions, 0 deletions
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<UserData>) -> 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 --- /dev/null +++ b/src/schema.rs diff --git a/src/types.rs b/src/types.rs new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/types.rs |
