aboutsummaryrefslogtreecommitdiff
path: root/src/webserver
diff options
context:
space:
mode:
authorFuwn <[email protected]>2020-10-30 12:58:50 -0700
committerFuwn <[email protected]>2020-10-30 12:58:50 -0700
commit3ca642734629b108ece241ea9644f5ed1ee339cb (patch)
tree515fc5c33c62eb4ab970f3d3e5bb7f40ff417df1 /src/webserver
parentchore: change cc env vars file type, (md -> txt) (diff)
downloaddep-core-next-3ca642734629b108ece241ea9644f5ed1ee339cb.tar.xz
dep-core-next-3ca642734629b108ece241ea9644f5ed1ee339cb.zip
feat (desc)
feat: - add `Procfile` and `app.json` to "prep" for heroku (probably not going to go to heroku though). - implement a plugin system and enable `random_hi` plugin. - move webserver to seperate location
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\"}")
+}