Move session into an extractor minus client listener changes.

This commit is contained in:
Jeff Baskin 2025-04-20 10:15:55 -04:00
parent bb70cc65e0
commit 4fc050e590
3 changed files with 24 additions and 11 deletions

View File

@ -325,7 +325,8 @@ impl Client {
msg.get_data("doc").unwrap().to_string(),
)s
*/
self.registry.send(&tx_id, initial_msg.reply(MsgType::Document));
self.registry
.send(&tx_id, initial_msg.reply(MsgType::Document));
}
}

View File

@ -37,7 +37,7 @@ impl MoreThanText {
let mut msg = Message::new(MsgType::SessionValidate);
match session {
Some(id) => msg.add_data("sess_id", id.into()),
None => {},
None => {}
}
let rx = self.client_link.send(msg);
let reply = rx.recv().unwrap();

View File

@ -4,8 +4,7 @@ use axum::{
http::request::Parts,
response::IntoResponse,
routing::get,
RequestPartsExt,
Router,
RequestPartsExt, Router,
};
use axum_extra::extract::cookie::{Cookie, CookieJar};
use clap::Parser;
@ -44,7 +43,16 @@ async fn main() {
.unwrap();
}
struct SessionID;
async fn create_app(state: MoreThanText) -> Router {
Router::new()
.route("/", get(mtt_conn))
.layer(CookieManagerLayer::new())
.layer(Extension(state.clone()))
.with_state(state)
}
#[derive(Clone)]
struct SessionID(Uuid);
#[async_trait]
impl<S> FromRequestParts<S> for SessionID
@ -54,20 +62,22 @@ where
type Rejection = Infallible;
async fn from_request_parts(parts: &mut Parts, state: &S) -> Result<Self, Self::Rejection> {
let cookies = parts.extract::<Extension<Cookies>>();
Ok(Self {})
let Extension(cookies) = parts.extract::<Extension<Cookies>>().await.unwrap();
let Extension(mut state) = parts.extract::<Extension<MoreThanText>>().await.unwrap();
let sess_id: Option<String> = None;
let id = Uuid::nil();
//let id = state.validate_session(sess_id);
cookies.add(tower_cookies::Cookie::new(SESSION_KEY, id.to_string()));
Ok(SessionID(id))
}
}
async fn create_app(state: MoreThanText) -> Router {
Router::new().route("/", get(mtt_conn)).with_state(state)
}
async fn mtt_conn(
jar: CookieJar,
sess_id: SessionID,
state: State<MoreThanText>,
) -> impl IntoResponse {
/*
let sid = match jar.get(SESSION_KEY) {
Some(cookie) => Some(cookie.value().to_string()),
None => None,
@ -81,6 +91,8 @@ async fn mtt_conn(
let cookie = Cookie::build((SESSION_KEY, reply.get_data("sess_id").unwrap().to_string()));
let cookies = jar.add(cookie);
(cookies, reply.get_data("dov").unwrap().to_string())
*/
("something".to_string(),)
}
#[cfg(test)]