diff options
author | Vincent Ambo <mail@tazj.in> | 2021-04-05T15·22+0200 |
---|---|---|
committer | tazjin <mail@tazj.in> | 2021-04-05T19·19+0000 |
commit | a0c4b91955662297ec5bd9249a9488ea6d52defc (patch) | |
tree | da1423cb0b9552ed2215628e449928b3dcc159bf /web/converse/src | |
parent | 5387cc9e7d7ef5ca9ecaeea46132510298902769 (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.rs | 14 | ||||
-rw-r--r-- | web/converse/src/main.rs | 28 | ||||
-rw-r--r-- | web/converse/src/oidc.rs | 4 |
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()?; |