use super::middleware::Credentials;
use serde::{Deserialize, Deserializer};
#[derive(Clone, Debug, Eq, PartialEq)]
#[non_exhaustive]
pub struct PostLogin<C: Credentials> {
pub credentials: C,
pub uri: String,
}
impl<'de, C> Deserialize<'de> for PostLogin<C>
where
C: Credentials,
{
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
#[allow(clippy::allow_attributes, reason = "The allow below doesn't work with an expect")]
#[allow(clippy::missing_docs_in_private_items, reason = "Internal helper struct")]
#[derive(Deserialize)]
struct Helper<C> {
#[serde(flatten)]
credentials: C,
uri: String,
}
let helper = Helper::deserialize(deserializer)?;
Ok(Self {
credentials: helper.credentials,
uri: helper.uri,
})
}
}