summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.rs59
-rw-r--r--src/schema.rs0
-rw-r--r--src/types.rs0
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