use crate::constants::Binding;
use crate::error::SamlError;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum SsoRequestBinding {
Redirect,
Post,
SimpleSign,
}
impl SsoRequestBinding {
pub fn as_binding(self) -> Binding {
match self {
Self::Redirect => Binding::Redirect,
Self::Post => Binding::Post,
Self::SimpleSign => Binding::SimpleSign,
}
}
}
impl From<SsoRequestBinding> for Binding {
fn from(value: SsoRequestBinding) -> Self {
value.as_binding()
}
}
impl TryFrom<Binding> for SsoRequestBinding {
type Error = SamlError;
fn try_from(value: Binding) -> Result<Self, Self::Error> {
match value {
Binding::Redirect => Ok(Self::Redirect),
Binding::Post => Ok(Self::Post),
Binding::SimpleSign => Ok(Self::SimpleSign),
Binding::Artifact => Err(SamlError::UndefinedBinding),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum SsoResponseBinding {
Post,
SimpleSign,
}
impl SsoResponseBinding {
pub fn as_binding(self) -> Binding {
match self {
Self::Post => Binding::Post,
Self::SimpleSign => Binding::SimpleSign,
}
}
}
impl From<SsoResponseBinding> for Binding {
fn from(value: SsoResponseBinding) -> Self {
value.as_binding()
}
}
impl TryFrom<Binding> for SsoResponseBinding {
type Error = SamlError;
fn try_from(value: Binding) -> Result<Self, Self::Error> {
match value {
Binding::Post => Ok(Self::Post),
Binding::SimpleSign => Ok(Self::SimpleSign),
Binding::Redirect | Binding::Artifact => Err(SamlError::UndefinedBinding),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum LogoutBinding {
Redirect,
Post,
SimpleSign,
}
impl LogoutBinding {
pub fn as_binding(self) -> Binding {
match self {
Self::Redirect => Binding::Redirect,
Self::Post => Binding::Post,
Self::SimpleSign => Binding::SimpleSign,
}
}
}
impl From<LogoutBinding> for Binding {
fn from(value: LogoutBinding) -> Self {
value.as_binding()
}
}
impl TryFrom<Binding> for LogoutBinding {
type Error = SamlError;
fn try_from(value: Binding) -> Result<Self, Self::Error> {
match value {
Binding::Redirect => Ok(Self::Redirect),
Binding::Post => Ok(Self::Post),
Binding::SimpleSign => Ok(Self::SimpleSign),
Binding::Artifact => Err(SamlError::UndefinedBinding),
}
}
}