From 7a931925fa03b0d529c4a3f18d29ce737ba831d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Commaille?= Date: Thu, 1 Sep 2022 14:14:20 +0200 Subject: [PATCH] Basic improvements to oauth2-types requests Make sure all types implement Serialize, Deserialize, Debug and Clone. Make sure all types can be constructed and all fields can be accessed. --- crates/oauth2-types/src/requests.rs | 47 +++++++++++++++-------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/crates/oauth2-types/src/requests.rs b/crates/oauth2-types/src/requests.rs index 7418cfd6..57f35ed8 100644 --- a/crates/oauth2-types/src/requests.rs +++ b/crates/oauth2-types/src/requests.rs @@ -98,8 +98,9 @@ pub enum Prompt { Create, } +#[skip_serializing_none] #[serde_as] -#[derive(Serialize, Deserialize)] +#[derive(Serialize, Deserialize, Debug, Clone)] pub struct AuthorizationRequest { pub response_type: OAuthAuthorizationEndpointResponseType, @@ -115,7 +116,7 @@ pub struct AuthorizationRequest { pub nonce: Option, - display: Option, + pub display: Option, pub prompt: Option, @@ -125,15 +126,15 @@ pub struct AuthorizationRequest { #[serde_as(as = "Option>")] #[serde(default)] - ui_locales: Option>, + pub ui_locales: Option>, - id_token_hint: Option, + pub id_token_hint: Option, - login_hint: Option, + pub login_hint: Option, #[serde_as(as = "Option>")] #[serde(default)] - acr_values: Option>, + pub acr_values: Option>, pub request: Option, @@ -142,7 +143,8 @@ pub struct AuthorizationRequest { pub registration: Option, } -#[derive(Serialize, Deserialize, Default)] +#[skip_serializing_none] +#[derive(Serialize, Deserialize, Default, Debug, Clone)] pub struct AuthorizationResponse { pub code: Option, #[serde(flatten)] @@ -150,7 +152,7 @@ pub struct AuthorizationResponse { } #[skip_serializing_none] -#[derive(Serialize, Deserialize, Debug, PartialEq, Eq)] +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] pub struct AuthorizationCodeGrant { pub code: String, #[serde(default)] @@ -161,18 +163,19 @@ pub struct AuthorizationCodeGrant { pub code_verifier: Option, } -#[derive(Serialize, Deserialize, Debug, PartialEq, Eq)] +#[skip_serializing_none] +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] pub struct RefreshTokenGrant { pub refresh_token: String, #[serde(default)] - scope: Option, + pub scope: Option, } -#[derive(Serialize, Deserialize, Debug, PartialEq, Eq)] +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] pub struct ClientCredentialsGrant { #[serde(default)] - scope: Option, + pub scope: Option, } #[derive( @@ -197,7 +200,7 @@ pub enum GrantType { ClientCredentials, } -#[derive(Serialize, Deserialize, Debug, PartialEq, Eq)] +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] #[serde(tag = "grant_type", rename_all = "snake_case")] pub enum AccessTokenRequest { AuthorizationCode(AuthorizationCodeGrant), @@ -209,19 +212,19 @@ pub enum AccessTokenRequest { #[serde_as] #[skip_serializing_none] -#[derive(Serialize, Deserialize, Debug, PartialEq, Eq)] +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] pub struct AccessTokenResponse { - access_token: String, - refresh_token: Option, + pub access_token: String, + pub refresh_token: Option, // TODO: this should be somewhere else - id_token: Option, + pub id_token: Option, - token_type: OAuthAccessTokenType, + pub token_type: OAuthAccessTokenType, #[serde_as(as = "Option>")] - expires_in: Option, + pub expires_in: Option, - scope: Option, + pub scope: Option, } impl AccessTokenResponse { @@ -263,7 +266,7 @@ impl AccessTokenResponse { } #[skip_serializing_none] -#[derive(Serialize, Deserialize, Debug, PartialEq, Eq)] +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] pub struct IntrospectionRequest { pub token: String, @@ -273,7 +276,7 @@ pub struct IntrospectionRequest { #[serde_as] #[skip_serializing_none] -#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Default)] +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Default)] pub struct IntrospectionResponse { pub active: bool,