blob: 876cebe5dbb728fce2d1315743e1a0b54a5a4a36 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
use gotham::state::FromState as _;
#[derive(
serde::Deserialize,
gotham_derive::StateData,
gotham_derive::StaticResponseExtender,
)]
pub struct QueryParams {
username: Option<String>,
}
#[derive(serde::Serialize)]
struct Response {
username: Option<String>,
}
pub fn run(
mut state: gotham::state::State,
) -> (gotham::state::State, hyper::Response<hyper::Body>) {
let username = {
let query_params = QueryParams::borrow_from(&state);
query_params.username.clone()
};
let session = gotham::middleware::session::SessionData::<
crate::web::SessionData,
>::borrow_mut_from(&mut state);
session.login = username.clone().map(|username| super::LoginState {
username: username.clone(),
auth: crate::protocol::Auth::plain(&username),
});
(
state,
hyper::Response::new(hyper::Body::from(
serde_json::to_string(&Response { username }).unwrap(),
)),
)
}
|