use serde::Deserialize;
use crate::common::StatusResponse;
use crate::SessionId;
#[derive(Debug, Clone, Deserialize)]
pub struct RequestToken {
pub success: bool,
pub request_token: String,
pub expires_at: String,
}
impl RequestToken {
pub fn redirect_url(&self) -> String {
format!(
"https://www.themoviedb.org/authenticate/{}",
self.request_token
)
}
}
#[derive(Debug, Clone, Deserialize)]
pub struct Session {
pub success: bool,
pub session_id: String,
}
#[derive(Debug, Clone, Deserialize)]
pub struct GuestSession {
pub success: bool,
pub guest_session_id: String,
pub expires_at: String,
}
endpoint! {
validate_key(): GET "/authentication" => bool [success]
}
endpoint! {
request_token(): GET "/authentication/token/new" => RequestToken
}
endpoint! {
validate_with_login(): POST "/authentication/token/validate_with_login" => RequestToken {
body { username: &str, password: &str, request_token: &str }
}
}
endpoint! {
create_session(): POST "/authentication/session/new" => Session {
body { request_token: &str }
}
}
endpoint! {
create_guest_session(): GET "/authentication/guest_session/new" => GuestSession
}
endpoint! {
delete_session(): DELETE "/authentication/session" => StatusResponse {
body { session_id: SessionId }
}
}