@@ -116,6 +116,55 @@ impl std::fmt::Display for PkceMode {
116116 }
117117}
118118
119+ #[ derive( Debug , Clone , Error ) ]
120+ #[ error( "Invalid response mode {0:?}" ) ]
121+ pub struct InvalidResponseModeError ( String ) ;
122+
123+ #[ derive( Debug , Clone , Copy , PartialEq , Eq , Serialize , Deserialize , Default ) ]
124+ #[ serde( rename_all = "snake_case" ) ]
125+ pub enum ResponseMode {
126+ #[ default]
127+ Query ,
128+ FormPost ,
129+ }
130+
131+ impl From < ResponseMode > for oauth2_types:: requests:: ResponseMode {
132+ fn from ( value : ResponseMode ) -> Self {
133+ match value {
134+ ResponseMode :: Query => oauth2_types:: requests:: ResponseMode :: Query ,
135+ ResponseMode :: FormPost => oauth2_types:: requests:: ResponseMode :: FormPost ,
136+ }
137+ }
138+ }
139+
140+ impl ResponseMode {
141+ #[ must_use]
142+ pub fn as_str ( self ) -> & ' static str {
143+ match self {
144+ Self :: Query => "query" ,
145+ Self :: FormPost => "form_post" ,
146+ }
147+ }
148+ }
149+
150+ impl std:: fmt:: Display for ResponseMode {
151+ fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
152+ f. write_str ( self . as_str ( ) )
153+ }
154+ }
155+
156+ impl std:: str:: FromStr for ResponseMode {
157+ type Err = InvalidResponseModeError ;
158+
159+ fn from_str ( s : & str ) -> Result < Self , Self :: Err > {
160+ match s {
161+ "query" => Ok ( ResponseMode :: Query ) ,
162+ "form_post" => Ok ( ResponseMode :: FormPost ) ,
163+ s => Err ( InvalidResponseModeError ( s. to_owned ( ) ) ) ,
164+ }
165+ }
166+ }
167+
119168#[ derive( Debug , Clone , Copy , Serialize , Deserialize , PartialEq , Eq ) ]
120169#[ serde( rename_all = "snake_case" ) ]
121170pub enum TokenAuthMethod {
@@ -183,6 +232,7 @@ pub struct UpstreamOAuthProvider {
183232 pub encrypted_client_secret : Option < String > ,
184233 pub token_endpoint_signing_alg : Option < JsonWebSignatureAlg > ,
185234 pub token_endpoint_auth_method : TokenAuthMethod ,
235+ pub response_mode : ResponseMode ,
186236 pub created_at : DateTime < Utc > ,
187237 pub disabled_at : Option < DateTime < Utc > > ,
188238 pub claims_imports : ClaimsImports ,
0 commit comments