about summary refs log tree commit diff
path: root/web/converse/src
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2021-04-05T15·22+0200
committertazjin <mail@tazj.in>2021-04-05T19·19+0000
commita0c4b91955662297ec5bd9249a9488ea6d52defc (patch)
treeda1423cb0b9552ed2215628e449928b3dcc159bf /web/converse/src
parent5387cc9e7d7ef5ca9ecaeea46132510298902769 (diff)
fix(web/converse): Bare minimum changes to build in 2021 r/2443
This project depends on Tokio, via actix, and both of those are bad
ideas. This wasn't as clear 3 years ago as it is now, but to
demonstrate it the project has amassed issues which required at least
this minimum of changes to be buildable in 2021 (using a modern
rustc).

Yes, this adds dozens of new dependencies again (because of a
top-level update) but don't worry: They will be gone when I'm done
here.

Change-Id: I1dde9dc0325da7bdcb6608359fab33e27692dc1d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2857
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Diffstat (limited to 'web/converse/src')
-rw-r--r--web/converse/src/handlers.rs14
-rw-r--r--web/converse/src/main.rs28
-rw-r--r--web/converse/src/oidc.rs4
3 files changed, 22 insertions, 24 deletions
diff --git a/web/converse/src/handlers.rs b/web/converse/src/handlers.rs
index efdffb3f9102..d558afbe1242 100644
--- a/web/converse/src/handlers.rs
+++ b/web/converse/src/handlers.rs
@@ -46,13 +46,13 @@ const NEW_THREAD_LENGTH_ERR: &'static str = "Title and body can not be empty!";
 /// Represents the state carried by the web server actors.
 pub struct AppState {
     /// Address of the database actor
-    pub db: Addr<Syn, DbExecutor>,
+    pub db: Addr<DbExecutor>,
 
     /// Address of the OIDC actor
-    pub oidc: Addr<Syn, OidcExecutor>,
+    pub oidc: Addr<OidcExecutor>,
 
     /// Address of the rendering actor
-    pub renderer: Addr<Syn, Renderer>,
+    pub renderer: Addr<Renderer>,
 }
 
 pub fn forum_index(state: State<AppState>) -> ConverseResponse {
@@ -113,9 +113,9 @@ pub struct NewThreadForm {
 
 /// This handler receives a "New thread"-form and redirects the user
 /// to the new thread after creation.
-pub fn submit_thread(state: State<AppState>,
-                     input: Form<NewThreadForm>,
-                     req: HttpRequest<AppState>) -> ConverseResponse {
+pub fn submit_thread((state, input, req): (State<AppState>,
+                                           Form<NewThreadForm>,
+                                           HttpRequest<AppState>)) -> ConverseResponse {
     // Trim whitespace out of inputs:
     let input = NewThreadForm {
         title: input.title.trim().into(),
@@ -328,7 +328,7 @@ impl EmbeddedFile for App<AppState> {
 pub struct RequireLogin;
 
 impl <S> Middleware<S> for RequireLogin {
-    fn start(&self, req: &mut HttpRequest<S>) -> actix_web::Result<Started> {
+    fn start(&self, req: &HttpRequest<S>) -> actix_web::Result<Started> {
         let logged_in = req.identity().is_some();
         let is_oidc_req = req.path().starts_with("/oidc");
 
diff --git a/web/converse/src/main.rs b/web/converse/src/main.rs
index 55d84b981b64..5c8a188fc31b 100644
--- a/web/converse/src/main.rs
+++ b/web/converse/src/main.rs
@@ -90,7 +90,7 @@ fn config_default(name: &str, default: &str) -> String {
     env::var(name).unwrap_or(default.into())
 }
 
-fn start_db_executor() -> Addr<Syn, DbExecutor> {
+fn start_db_executor() -> Addr<DbExecutor> {
     info!("Initialising database connection pool ...");
     let db_url = config("DATABASE_URL");
 
@@ -100,7 +100,7 @@ fn start_db_executor() -> Addr<Syn, DbExecutor> {
     SyncArbiter::start(2, move || DbExecutor(pool.clone()))
 }
 
-fn schedule_search_refresh(db: Addr<Syn, DbExecutor>) {
+fn schedule_search_refresh(db: Addr<DbExecutor>) {
     use tokio::prelude::*;
     use tokio::timer::Interval;
     use std::time::{Duration, Instant};
@@ -114,7 +114,7 @@ fn schedule_search_refresh(db: Addr<Syn, DbExecutor>) {
     thread::spawn(|| tokio::run(task));
 }
 
-fn start_oidc_executor(base_url: &str) -> Addr<Syn, OidcExecutor> {
+fn start_oidc_executor(base_url: &str) -> Addr<OidcExecutor> {
     info!("Initialising OIDC integration ...");
     let oidc_url = config("OIDC_DISCOVERY_URL");
     let oidc_config = oidc::load_oidc(&oidc_url)
@@ -130,7 +130,7 @@ fn start_oidc_executor(base_url: &str) -> Addr<Syn, OidcExecutor> {
     oidc.start()
 }
 
-fn start_renderer() -> Addr<Syn, Renderer> {
+fn start_renderer() -> Addr<Renderer> {
     let comrak = comrak::ComrakOptions{
         github_pre_lang: true,
         ext_strikethrough: true,
@@ -155,9 +155,9 @@ fn gen_session_key() -> [u8; 64] {
 }
 
 fn start_http_server(base_url: String,
-                     db_addr: Addr<Syn, DbExecutor>,
-                     oidc_addr: Addr<Syn, OidcExecutor>,
-                     renderer_addr: Addr<Syn, Renderer>) {
+                     db_addr: Addr<DbExecutor>,
+                     oidc_addr: Addr<OidcExecutor>,
+                     renderer_addr: Addr<Renderer>) {
     info!("Initialising HTTP server ...");
     let bind_host = config_default("CONVERSE_BIND_HOST", "127.0.0.1:4567");
     let key = gen_session_key();
@@ -182,14 +182,14 @@ fn start_http_server(base_url: String,
             .middleware(identity)
             .resource("/", |r| r.method(Method::GET).with(forum_index))
             .resource("/thread/new", |r| r.method(Method::GET).with(new_thread))
-            .resource("/thread/submit", |r| r.method(Method::POST).with3(submit_thread))
-            .resource("/thread/reply", |r| r.method(Method::POST).with3(reply_thread))
-            .resource("/thread/{id}", |r| r.method(Method::GET).with3(forum_thread))
-            .resource("/post/{id}/edit", |r| r.method(Method::GET).with3(edit_form))
-            .resource("/post/edit", |r| r.method(Method::POST).with3(edit_post))
-            .resource("/search", |r| r.method(Method::GET).with2(search_forum))
+            .resource("/thread/submit", |r| r.method(Method::POST).with(submit_thread))
+            .resource("/thread/reply", |r| r.method(Method::POST).with(reply_thread))
+            .resource("/thread/{id}", |r| r.method(Method::GET).with(forum_thread))
+            .resource("/post/{id}/edit", |r| r.method(Method::GET).with(edit_form))
+            .resource("/post/edit", |r| r.method(Method::POST).with(edit_post))
+            .resource("/search", |r| r.method(Method::GET).with(search_forum))
             .resource("/oidc/login", |r| r.method(Method::GET).with(login))
-            .resource("/oidc/callback", |r| r.method(Method::POST).with3(callback))
+            .resource("/oidc/callback", |r| r.method(Method::POST).with(callback))
             .static_file("/static/highlight.css", include_bytes!("../static/highlight.css"))
             .static_file("/static/highlight.js", include_bytes!("../static/highlight.js"))
             .static_file("/static/styles.css", include_bytes!("../static/styles.css"));
diff --git a/web/converse/src/oidc.rs b/web/converse/src/oidc.rs
index 970aeb92aa47..849143596895 100644
--- a/web/converse/src/oidc.rs
+++ b/web/converse/src/oidc.rs
@@ -27,8 +27,6 @@ use reqwest;
 use url::Url;
 use url_serde;
 use errors::*;
-use reqwest::header::Authorization;
-use hyper::header::Bearer;
 
 /// This structure represents the contents of an OIDC discovery
 /// document.
@@ -130,7 +128,7 @@ impl Handler<RetrieveToken> for OidcExecutor {
         let token: TokenResponse = response.json()?;
 
         let user: Userinfo = client.get(&self.oidc_config.userinfo_endpoint)
-            .header(Authorization(Bearer { token: token.access_token }))
+            .header("Authorization", format!("Bearer {}", token.access_token ))
             .send()?
             .json()?;