Add `GET /api/v1/sessions/:id` route to get session information
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
This commit is contained in:
parent
3f48c2c516
commit
34064ef8b5
|
|
@ -11,6 +11,8 @@ impl Serialize for DateTime {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Serialize)]
|
||||
#[serde(tag = "type", rename_all = "camelCase")]
|
||||
pub enum AuthState {
|
||||
Authorized(Session),
|
||||
Unauthorized {
|
||||
|
|
|
|||
|
|
@ -20,7 +20,10 @@ pub const AUTHORIZED_SESSIONS_EXPIRATION: Duration = Duration::weeks(1);
|
|||
pub fn router(ctx: Context) -> Router {
|
||||
Router::new()
|
||||
.route("/sessions", post(session_create_handler))
|
||||
.route("/sessions/:id", put(session_signin_handler))
|
||||
.route(
|
||||
"/sessions/:id",
|
||||
put(session_signin_handler).get(session_handler),
|
||||
)
|
||||
.with_state(ctx)
|
||||
}
|
||||
|
||||
|
|
@ -53,6 +56,18 @@ async fn session_create_handler(State(ctx): State<Context>) -> impl IntoResponse
|
|||
))
|
||||
}
|
||||
|
||||
/// Get a session.
|
||||
/// `GET /sessions/:id`
|
||||
async fn session_handler(
|
||||
State(ctx): State<Context>,
|
||||
Path(session_id): Path<String>,
|
||||
) -> impl IntoResponse {
|
||||
let sessions = ctx.sessions.read().await;
|
||||
let session = sessions.get(&session_id).ok_or(Error::NotFound)?.to_owned();
|
||||
|
||||
Ok::<_, Error>(Json(session))
|
||||
}
|
||||
|
||||
/// Update session.
|
||||
/// `PUT /sessions/:id`
|
||||
async fn session_signin_handler(
|
||||
|
|
@ -100,7 +115,7 @@ mod routes {
|
|||
use axum::http::StatusCode;
|
||||
use radicle_cli::commands::rad_web::{self, SessionInfo};
|
||||
|
||||
use crate::api::test::{self, post, put};
|
||||
use crate::api::test::{self, get, post, put};
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_session() {
|
||||
|
|
@ -131,5 +146,8 @@ mod routes {
|
|||
.await;
|
||||
|
||||
assert_eq!(response.status(), StatusCode::OK);
|
||||
|
||||
let response = get(&app, format!("/sessions/{}", session_info.session_id)).await;
|
||||
assert_eq!(response.status(), StatusCode::OK);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue