aboutsummaryrefslogtreecommitdiff
path: root/src/webserver
diff options
context:
space:
mode:
Diffstat (limited to 'src/webserver')
-rw-r--r--src/webserver/mod.rs2
-rw-r--r--src/webserver/model.rs15
-rw-r--r--src/webserver/rocket.rs24
3 files changed, 41 insertions, 0 deletions
diff --git a/src/webserver/mod.rs b/src/webserver/mod.rs
new file mode 100644
index 0000000..526a59d
--- /dev/null
+++ b/src/webserver/mod.rs
@@ -0,0 +1,2 @@
+pub mod model;
+pub mod rocket;
diff --git a/src/webserver/model.rs b/src/webserver/model.rs
new file mode 100644
index 0000000..260f1f5
--- /dev/null
+++ b/src/webserver/model.rs
@@ -0,0 +1,15 @@
+use serenity::framework::standard::Command;
+use serenity::prelude::Mutex;
+use std::collections::HashMap;
+use std::sync::Arc;
+use typemap::TypeMap;
+
+pub type WispResult<T = ()> = Result<T, Box<dyn std::error::Error + Send + Sync>>;
+pub type CommandMap = HashMap<String, dyn Command>;
+
+#[derive(Clone)]
+pub struct WispData {
+ // pub writer: Arc<Mutex<Writer>>,
+ // pub commands: CommandMap,
+ pub data: Arc<Mutex<TypeMap>>
+}
diff --git a/src/webserver/rocket.rs b/src/webserver/rocket.rs
new file mode 100644
index 0000000..ac7401b
--- /dev/null
+++ b/src/webserver/rocket.rs
@@ -0,0 +1,24 @@
+use rocket::response::content;
+use rocket::{State, get, post, request::Form, routes};
+use rocket::response::NamedFile;
+// use std::sync::Arc;
+use crate::webserver::model::*;
+
+pub async fn start_rocket() -> WispResult { // ctx: WispData
+ rocket::ignite()
+ .mount("/", routes![
+ icon, index
+ ]).launch();
+
+ Ok(())
+}
+
+#[get("/favicon.ico")]
+pub fn icon() -> Option<NamedFile> {
+ NamedFile::open("static/favicon.ico").ok()
+}
+
+#[get("/")]
+pub fn index() -> content::Json<&'static str> {
+ content::Json("{\"message\": \"online\"}")
+}