use url::Url;
use crate::common::frontend::{OAuthError, PublicOAuthErrorBody};
#[derive(Debug, PartialEq)]
pub enum FrontendResponse {
Success {
json: serde_json::Value,
},
Error {
error: PublicOAuthErrorBody,
},
Redirect {
location: Url,
},
}
pub trait FrontendResponseExt {
fn into_frontend_response(self) -> FrontendResponse;
}
impl<R, E> FrontendResponseExt for Result<R, OAuthError<E>>
where
R: FrontendResponseExt,
{
fn into_frontend_response(self) -> FrontendResponse {
match self {
Ok(r) => r.into_frontend_response(),
Err(e) => e.into_frontend_response(),
}
}
}