aboutsummaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
Diffstat (limited to 'server/src')
-rw-r--r--server/src/routes/mod.rs4
-rw-r--r--server/src/routes/stream.rs2
-rw-r--r--server/src/routes/streamsync.rs11
-rw-r--r--server/src/routes/ui/account/mod.rs8
-rw-r--r--server/src/routes/ui/account/session/guard.rs2
5 files changed, 21 insertions, 6 deletions
diff --git a/server/src/routes/mod.rs b/server/src/routes/mod.rs
index d6c1e9f..e4d05e5 100644
--- a/server/src/routes/mod.rs
+++ b/server/src/routes/mod.rs
@@ -37,8 +37,11 @@ use ui::{
};
use userdata::{r_node_userdata, r_player_progress, r_player_watched};
+use self::streamsync::r_streamsync;
+
pub mod api;
pub mod stream;
+pub mod streamsync;
pub mod ui;
pub mod userdata;
@@ -85,6 +88,7 @@ pub fn build_rocket(database: DataAcid, federation: Federation) -> Rocket<Build>
routes![
r_home,
r_home_unpriv,
+ r_streamsync,
r_favicon,
r_item_assets,
r_all_items_filter,
diff --git a/server/src/routes/stream.rs b/server/src/routes/stream.rs
index 5c21a5a..11fd094 100644
--- a/server/src/routes/stream.rs
+++ b/server/src/routes/stream.rs
@@ -231,7 +231,7 @@ impl<'r> FromRequest<'r> for RequestRange {
match req.headers().get("range").next() {
Some(v) => match Self::from_hv(v) {
Ok(v) => rocket::outcome::Outcome::Success(v),
- Err(e) => rocket::outcome::Outcome::Failure((Status::BadRequest, e)),
+ Err(e) => rocket::outcome::Outcome::Error((Status::BadRequest, e)),
},
None => rocket::outcome::Outcome::Forward(Status::Ok),
}
diff --git a/server/src/routes/streamsync.rs b/server/src/routes/streamsync.rs
new file mode 100644
index 0000000..d4a4d7e
--- /dev/null
+++ b/server/src/routes/streamsync.rs
@@ -0,0 +1,11 @@
+use rocket::get;
+use rocket_ws::{Stream, WebSocket};
+
+#[get("/streamsync")]
+pub fn r_streamsync(ws: WebSocket) -> Stream!['static] {
+ Stream! { ws =>
+ for await message in ws {
+ yield message?;
+ }
+ }
+}
diff --git a/server/src/routes/ui/account/mod.rs b/server/src/routes/ui/account/mod.rs
index 8af92a0..eeafce1 100644
--- a/server/src/routes/ui/account/mod.rs
+++ b/server/src/routes/ui/account/mod.rs
@@ -186,12 +186,12 @@ pub fn r_account_login_post(
None => return Err(format_form_error(form)),
};
jar.add(
- Cookie::build(
+ Cookie::build((
"session",
login_logic(database, &form.username, &form.password, None, None)?,
- )
+ ))
.permanent()
- .finish(),
+ .build(),
);
Ok(Redirect::found(rocket::uri!(r_home())))
@@ -199,7 +199,7 @@ pub fn r_account_login_post(
#[post("/account/logout")]
pub fn r_account_logout_post(jar: &CookieJar) -> MyResult<Redirect> {
- jar.remove_private(Cookie::named("session"));
+ jar.remove_private(Cookie::build("session"));
Ok(Redirect::found(rocket::uri!(r_home())))
}
diff --git a/server/src/routes/ui/account/session/guard.rs b/server/src/routes/ui/account/session/guard.rs
index b2fd408..6969491 100644
--- a/server/src/routes/ui/account/session/guard.rs
+++ b/server/src/routes/ui/account/session/guard.rs
@@ -81,7 +81,7 @@ impl<'r> FromRequest<'r> for AdminSession {
if x.user.admin {
Outcome::Success(AdminSession(x))
} else {
- Outcome::Failure((
+ Outcome::Error((
Status::Unauthorized,
MyError(anyhow!("you are not an admin")),
))