use crate::{
AdditionalClaims, ExtraTokenFields, GenderClaim, IdToken, IdTokenFields,
JweContentEncryptionAlgorithm, JwsSigningAlgorithm, OAuth2TokenResponse, StandardTokenResponse,
TokenType,
};
pub trait TokenResponse<AC, GC, JE, JS>: OAuth2TokenResponse
where
AC: AdditionalClaims,
GC: GenderClaim,
JE: JweContentEncryptionAlgorithm<KeyType = JS::KeyType>,
JS: JwsSigningAlgorithm,
{
fn id_token(&self) -> Option<&IdToken<AC, GC, JE, JS>>;
}
impl<AC, EF, GC, JE, JS, TT> TokenResponse<AC, GC, JE, JS>
for StandardTokenResponse<IdTokenFields<AC, EF, GC, JE, JS>, TT>
where
AC: AdditionalClaims,
EF: ExtraTokenFields,
GC: GenderClaim,
JE: JweContentEncryptionAlgorithm<KeyType = JS::KeyType>,
JS: JwsSigningAlgorithm,
TT: TokenType,
{
fn id_token(&self) -> Option<&IdToken<AC, GC, JE, JS>> {
self.extra_fields().id_token()
}
}