aboutsummaryrefslogtreecommitdiff
path: root/src/routes
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes')
-rw-r--r--src/routes/messages.rs19
-rw-r--r--src/routes/mod.rs26
2 files changed, 45 insertions, 0 deletions
diff --git a/src/routes/messages.rs b/src/routes/messages.rs
new file mode 100644
index 0000000..694a2a2
--- /dev/null
+++ b/src/routes/messages.rs
@@ -0,0 +1,19 @@
+use std::collections::HashMap;
+
+trait Content {}
+
+trait Message {
+ fn name(&self) -> String;
+}
+
+#[derive(Serialize)]
+pub struct Callback {
+ pub path: Vec<String>,
+ pub request: HashMap<String, String>,
+}
+
+impl Message for Callback {
+ fn name(&self) -> String {
+ String::from("Callback")
+ }
+} \ No newline at end of file
diff --git a/src/routes/mod.rs b/src/routes/mod.rs
new file mode 100644
index 0000000..3d11a8b
--- /dev/null
+++ b/src/routes/mod.rs
@@ -0,0 +1,26 @@
+use actix_web::{HttpRequest, Json, Result, Responder};
+use std::ops::Deref;
+
+pub mod messages;
+use messages::*;
+
+pub fn not_understood(_req: &HttpRequest) -> impl Responder {
+ "Hello, world!"
+}
+
+pub fn callback(req: &HttpRequest) -> Result<Json<Callback>> {
+ let path = String::from(req.path());
+ let request = (*(req.query().deref())).clone();
+
+ Ok(Json(Callback {
+ path: destruct_path(path),
+ request: request,
+ }))
+}
+
+fn destruct_path(path: String) -> Vec<String> {
+ path.split_terminator("/")
+ .skip(1)
+ .map(|s| String::from(s))
+ .collect::<Vec<String>>()
+} \ No newline at end of file