Forráskód Böngészése

Swap to using async_acquire.

Kestrel 5 napja
szülő
commit
e5d54b725e

+ 7 - 1
src/server.rs

@@ -27,6 +27,12 @@ pub struct ServerStateWrapper {
     core: &'static ServerState,
 }
 
+impl ServerStateWrapper {
+    async fn lease(&self) -> Result<microrm::ConnectionLease, microrm::Error> {
+        self.pool.acquire_async().await
+    }
+}
+
 impl std::ops::Deref for ServerStateWrapper {
     type Target = ServerState;
     fn deref(&self) -> &Self::Target {
@@ -39,7 +45,7 @@ pub type UIDCRequest = tide::Request<ServerStateWrapper>;
 async fn index(req: UIDCRequest) -> tide::Result<tide::Response> {
     let shelper = session::SessionHelper::new(&req);
 
-    let mut lease = req.state().pool.acquire()?;
+    let mut lease = req.state().lease().await?;
 
     let realm = shelper.get_realm(&mut lease)?;
     let session = shelper.get_session(&mut lease, &req);

+ 3 - 3
src/server/oidc.rs

@@ -91,7 +91,7 @@ async fn authorize(request: Request) -> tide::Result<tide::Response> {
     }
     let state: Option<String> = request.query::<State>().ok().and_then(|x| x.state);
 
-    match authorize::do_authorize(request, state.as_deref()) {
+    match authorize::do_authorize(request, state.as_deref()).await {
         Ok(r) => Ok(r),
         Err(e) => Ok(e.into_response()),
     }
@@ -106,7 +106,7 @@ async fn token(request: Request) -> tide::Result<tide::Response> {
 
 async fn jwks(request: Request) -> tide::Result<tide::Response> {
     let shelper = SessionHelper::new(&request);
-    let mut lease = request.state().pool.acquire()?;
+    let mut lease = request.state().lease().await?;
     let realm = shelper.get_realm(&mut lease)?;
 
     // build JWK set
@@ -136,7 +136,7 @@ async fn discovery_config(request: Request) -> tide::Result<tide::Response> {
     let server_config = &request.state().core.config;
     let realm_name = request.param("realm").unwrap();
     let base_url = format!("{}/{}", server_config.base_url, realm_name);
-    let mut lease = request.state().pool.acquire()?;
+    let mut lease = request.state().lease().await?;
 
     let Some(_realm) = &request
         .state()

+ 2 - 2
src/server/oidc/authorize.rs

@@ -62,12 +62,12 @@ fn do_code_authorize<'l, 's>(
     .into())
 }
 
-pub(super) fn do_authorize(
+pub(super) async fn do_authorize(
     request: Request,
     state: Option<&str>,
 ) -> Result<tide::Response, OIDCError> {
     let shelper = SessionHelper::new(&request);
-    let mut lease = request.state().pool.acquire()?;
+    let mut lease = request.state().lease().await?;
     let realm = shelper.get_realm(&mut lease).map_err(|_| {
         OIDCError(
             OIDCErrorType::InvalidRequest,

+ 1 - 1
src/server/oidc/token.rs

@@ -254,7 +254,7 @@ pub(super) async fn do_token<'l>(mut request: Request) -> Result<tide::Response,
     })?;
 
     let shelper = SessionHelper::new(&request);
-    let mut lease = request.state().pool.acquire()?;
+    let mut lease = request.state().lease().await?;
     let realm = shelper
         .get_realm(&mut lease)
         .map_err(|_| OIDCError(OIDCErrorType::InvalidRequest, "no such realm".into(), None))?;

+ 4 - 4
src/server/session.rs

@@ -214,7 +214,7 @@ async fn v1_onetime(req: Request) -> tide::Result<tide::Response> {
 
     let shelper = SessionHelper::new(&req);
 
-    let mut lease = req.state().pool.acquire()?;
+    let mut lease = req.state().lease().await?;
     let realm = shelper.get_realm(&mut lease)?;
     let (session, cookie) = shelper.get_or_build_session(&mut lease, &req)?;
     if let Some(c) = cookie {
@@ -293,7 +293,7 @@ async fn v1_login(req: Request) -> tide::Result<tide::Response> {
     let mut response = tide::Response::builder(200).build();
 
     let shelper = SessionHelper::new(&req);
-    let mut lease = req.state().pool.acquire()?;
+    let mut lease = req.state().lease().await?;
 
     let realm = shelper.get_realm(&mut lease)?;
     let (session, cookie) = shelper.get_or_build_session(&mut lease, &req)?;
@@ -332,7 +332,7 @@ async fn v1_login_post(mut req: Request) -> tide::Result<tide::Response> {
     let body: ResponseBody = req.body_form().await?;
 
     let shelper = SessionHelper::new(&req);
-    let mut lease = req.state().pool.acquire()?;
+    let mut lease = req.state().lease().await?;
 
     let realm = shelper.get_realm(&mut lease)?;
     let (session, cookie) = shelper.get_or_build_session(&mut lease, &req)?;
@@ -460,7 +460,7 @@ async fn v1_login_post(mut req: Request) -> tide::Result<tide::Response> {
 
 async fn v1_logout(req: Request) -> tide::Result<tide::Response> {
     let shelper = SessionHelper::new(&req);
-    let mut lease = req.state().pool.acquire()?;
+    let mut lease = req.state().lease().await?;
 
     #[derive(serde::Deserialize)]
     struct LogoutQuery {

+ 2 - 2
src/server/um.rs

@@ -34,7 +34,7 @@ fn generate_template_data(
 
 async fn um_index(req: Request) -> tide::Result<tide::Response> {
     let shelper = super::session::SessionHelper::new(&req);
-    let mut lease = req.state().pool.acquire()?;
+    let mut lease = req.state().lease().await?;
 
     let (realm, user_id) = match shelper.verify_session(&mut lease, &req) {
         Some(v) => v,
@@ -80,7 +80,7 @@ async fn um_update(mut req: Request) -> tide::Result<tide::Response> {
     let update_form: UpdateForm = req.body_form().await?;
 
     let shelper = super::session::SessionHelper::new(&req);
-    let mut lease = req.state().pool.acquire()?;
+    let mut lease = req.state().lease().await?;
 
     let (realm, user_id) = match shelper.verify_session(&mut lease, &req) {
         Some(v) => v,