diff --git a/Cargo.toml b/Cargo.toml index c6d7cf5..791fbce 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,6 @@ [package] name = "ragequit" +description = "A blazingly fast drop-in replacement for the Mastodon streaming api server" version = "0.1.0" authors = ["Julian Laubstein "] edition = "2018" diff --git a/rustfmt.toml b/rustfmt.toml new file mode 100644 index 0000000..866c756 --- /dev/null +++ b/rustfmt.toml @@ -0,0 +1 @@ +max_width = 120 \ No newline at end of file diff --git a/src/api/http/direct.rs b/src/api/http/direct.rs new file mode 100644 index 0000000..1560950 --- /dev/null +++ b/src/api/http/direct.rs @@ -0,0 +1,5 @@ +use actix_web::{HttpRequest, Responder}; + +pub fn index(_req: HttpRequest) -> impl Responder { + "OMG! It works!" +} diff --git a/src/api/http/hashtag.rs b/src/api/http/hashtag.rs new file mode 100644 index 0000000..68dc8ee --- /dev/null +++ b/src/api/http/hashtag.rs @@ -0,0 +1,9 @@ +use actix_web::{HttpRequest, Responder}; + +pub fn index(_req: HttpRequest) -> impl Responder { + "OMG! It works!" +} + +pub fn local(_req: HttpRequest) -> impl Responder { + "OMG! It works!" +} diff --git a/src/api/http/list.rs b/src/api/http/list.rs new file mode 100644 index 0000000..1560950 --- /dev/null +++ b/src/api/http/list.rs @@ -0,0 +1,5 @@ +use actix_web::{HttpRequest, Responder}; + +pub fn index(_req: HttpRequest) -> impl Responder { + "OMG! It works!" +} diff --git a/src/api/http/mod.rs b/src/api/http/mod.rs new file mode 100644 index 0000000..7bc3c79 --- /dev/null +++ b/src/api/http/mod.rs @@ -0,0 +1,5 @@ +pub mod direct; +pub mod hashtag; +pub mod list; +pub mod public; +pub mod user; diff --git a/src/api/http/public.rs b/src/api/http/public.rs new file mode 100644 index 0000000..68dc8ee --- /dev/null +++ b/src/api/http/public.rs @@ -0,0 +1,9 @@ +use actix_web::{HttpRequest, Responder}; + +pub fn index(_req: HttpRequest) -> impl Responder { + "OMG! It works!" +} + +pub fn local(_req: HttpRequest) -> impl Responder { + "OMG! It works!" +} diff --git a/src/api/http/user.rs b/src/api/http/user.rs new file mode 100644 index 0000000..1560950 --- /dev/null +++ b/src/api/http/user.rs @@ -0,0 +1,5 @@ +use actix_web::{HttpRequest, Responder}; + +pub fn index(_req: HttpRequest) -> impl Responder { + "OMG! It works!" +} diff --git a/src/api/mod.rs b/src/api/mod.rs new file mode 100644 index 0000000..f2066e6 --- /dev/null +++ b/src/api/mod.rs @@ -0,0 +1,2 @@ +pub mod http; +pub mod ws; diff --git a/src/api/ws/mod.rs b/src/api/ws/mod.rs new file mode 100644 index 0000000..1d6d704 --- /dev/null +++ b/src/api/ws/mod.rs @@ -0,0 +1,5 @@ +use actix_web::{HttpRequest, Responder}; + +pub fn index(_req: HttpRequest) -> impl Responder { + "OMG! WebSocket works!" +} diff --git a/src/main.rs b/src/main.rs index 601271d..4ccc6a4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,6 @@ -use actix_web::{server, App, HttpRequest, Responder}; +mod api; + +use actix_web::{server, App}; use env_logger::Builder; use log::info; use std::net::SocketAddr; @@ -19,12 +21,22 @@ fn main() { info!("starting streaming api server"); - server::new(|| App::new().resource("/api/v1/streaming", |r| r.with(index))) - .bind(SocketAddr::from(([127, 0, 0, 1], args.port))) - .unwrap() - .run(); -} + let addr: SocketAddr = ([127, 0, 0, 1], args.port).into(); -fn index(_req: HttpRequest) -> impl Responder { - "OMG! It works!" + use api::{http, ws}; + + server::new(|| { + App::new() + .resource("/api/v1/streaming/user", |r| r.with(http::user::index)) + .resource("/api/v1/streaming/public", |r| r.with(http::public::index)) + .resource("/api/v1/streaming/public/local", |r| r.with(http::public::local)) + .resource("/api/v1/streaming/direct", |r| r.with(http::direct::index)) + .resource("/api/v1/streaming/hashtag", |r| r.with(http::hashtag::index)) + .resource("/api/v1/streaming/hashtag/local", |r| r.with(http::hashtag::local)) + .resource("/api/v1/streaming/list", |r| r.with(http::list::index)) + .resource("/api/v1/streaming", |r| r.with(ws::index)) + }) + .bind(addr) + .unwrap() + .run(); }