1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct ProxyProvider {
17 #[serde(rename = "pk")]
18 pub pk: i32,
19 #[serde(rename = "name")]
20 pub name: String,
21 #[serde(
23 rename = "authentication_flow",
24 default,
25 with = "::serde_with::rust::double_option",
26 skip_serializing_if = "Option::is_none"
27 )]
28 pub authentication_flow: Option<Option<uuid::Uuid>>,
29 #[serde(rename = "authorization_flow")]
31 pub authorization_flow: uuid::Uuid,
32 #[serde(rename = "invalidation_flow")]
34 pub invalidation_flow: uuid::Uuid,
35 #[serde(rename = "property_mappings", skip_serializing_if = "Option::is_none")]
36 pub property_mappings: Option<Vec<uuid::Uuid>>,
37 #[serde(rename = "component")]
39 pub component: String,
40 #[serde(rename = "assigned_application_slug")]
42 pub assigned_application_slug: String,
43 #[serde(rename = "assigned_application_name")]
45 pub assigned_application_name: String,
46 #[serde(rename = "assigned_backchannel_application_slug")]
48 pub assigned_backchannel_application_slug: String,
49 #[serde(rename = "assigned_backchannel_application_name")]
51 pub assigned_backchannel_application_name: String,
52 #[serde(rename = "verbose_name")]
54 pub verbose_name: String,
55 #[serde(rename = "verbose_name_plural")]
57 pub verbose_name_plural: String,
58 #[serde(rename = "meta_model_name")]
60 pub meta_model_name: String,
61 #[serde(rename = "client_id")]
62 pub client_id: String,
63 #[serde(rename = "internal_host", skip_serializing_if = "Option::is_none")]
64 pub internal_host: Option<String>,
65 #[serde(rename = "external_host")]
66 pub external_host: String,
67 #[serde(rename = "internal_host_ssl_validation", skip_serializing_if = "Option::is_none")]
69 pub internal_host_ssl_validation: Option<bool>,
70 #[serde(
71 rename = "certificate",
72 default,
73 with = "::serde_with::rust::double_option",
74 skip_serializing_if = "Option::is_none"
75 )]
76 pub certificate: Option<Option<uuid::Uuid>>,
77 #[serde(rename = "skip_path_regex", skip_serializing_if = "Option::is_none")]
79 pub skip_path_regex: Option<String>,
80 #[serde(rename = "basic_auth_enabled", skip_serializing_if = "Option::is_none")]
82 pub basic_auth_enabled: Option<bool>,
83 #[serde(rename = "basic_auth_password_attribute", skip_serializing_if = "Option::is_none")]
85 pub basic_auth_password_attribute: Option<String>,
86 #[serde(rename = "basic_auth_user_attribute", skip_serializing_if = "Option::is_none")]
88 pub basic_auth_user_attribute: Option<String>,
89 #[serde(rename = "mode", skip_serializing_if = "Option::is_none")]
91 pub mode: Option<models::ProxyMode>,
92 #[serde(rename = "intercept_header_auth", skip_serializing_if = "Option::is_none")]
94 pub intercept_header_auth: Option<bool>,
95 #[serde(rename = "redirect_uris")]
96 pub redirect_uris: Vec<models::RedirectUri>,
97 #[serde(rename = "cookie_domain", skip_serializing_if = "Option::is_none")]
98 pub cookie_domain: Option<String>,
99 #[serde(rename = "jwt_federation_sources", skip_serializing_if = "Option::is_none")]
100 pub jwt_federation_sources: Option<Vec<uuid::Uuid>>,
101 #[serde(rename = "jwt_federation_providers", skip_serializing_if = "Option::is_none")]
102 pub jwt_federation_providers: Option<Vec<i32>>,
103 #[serde(rename = "access_token_validity", skip_serializing_if = "Option::is_none")]
105 pub access_token_validity: Option<String>,
106 #[serde(rename = "refresh_token_validity", skip_serializing_if = "Option::is_none")]
108 pub refresh_token_validity: Option<String>,
109 #[serde(rename = "outpost_set")]
110 pub outpost_set: Vec<String>,
111}
112
113impl ProxyProvider {
114 pub fn new(
116 pk: i32,
117 name: String,
118 authorization_flow: uuid::Uuid,
119 invalidation_flow: uuid::Uuid,
120 component: String,
121 assigned_application_slug: String,
122 assigned_application_name: String,
123 assigned_backchannel_application_slug: String,
124 assigned_backchannel_application_name: String,
125 verbose_name: String,
126 verbose_name_plural: String,
127 meta_model_name: String,
128 client_id: String,
129 external_host: String,
130 redirect_uris: Vec<models::RedirectUri>,
131 outpost_set: Vec<String>,
132 ) -> ProxyProvider {
133 ProxyProvider {
134 pk,
135 name,
136 authentication_flow: None,
137 authorization_flow,
138 invalidation_flow,
139 property_mappings: None,
140 component,
141 assigned_application_slug,
142 assigned_application_name,
143 assigned_backchannel_application_slug,
144 assigned_backchannel_application_name,
145 verbose_name,
146 verbose_name_plural,
147 meta_model_name,
148 client_id,
149 internal_host: None,
150 external_host,
151 internal_host_ssl_validation: None,
152 certificate: None,
153 skip_path_regex: None,
154 basic_auth_enabled: None,
155 basic_auth_password_attribute: None,
156 basic_auth_user_attribute: None,
157 mode: None,
158 intercept_header_auth: None,
159 redirect_uris,
160 cookie_domain: None,
161 jwt_federation_sources: None,
162 jwt_federation_providers: None,
163 access_token_validity: None,
164 refresh_token_validity: None,
165 outpost_set,
166 }
167 }
168}