1#[derive(serde::Serialize, serde::Deserialize)]
3#[derive(Clone, PartialEq, ::prost::Message)]
4pub struct ConfigMain {
5 #[prost(string, optional, tag = "1")]
6 pub env: ::core::option::Option<::prost::alloc::string::String>,
7 #[prost(string, optional, tag = "2")]
8 pub site_name: ::core::option::Option<::prost::alloc::string::String>,
9 #[prost(string, optional, tag = "3")]
10 pub site_url: ::core::option::Option<::prost::alloc::string::String>,
11 #[prost(bool, optional, tag = "5")]
12 pub enable_link_previews: ::core::option::Option<bool>,
13 #[prost(string, optional, tag = "6")]
14 pub restrict_link_previews: ::core::option::Option<::prost::alloc::string::String>,
15 #[prost(bool, optional, tag = "7")]
16 pub enable_client_performance_debugging: ::core::option::Option<bool>,
17 #[prost(bool, optional, tag = "8")]
18 pub enable_gif_picker: ::core::option::Option<bool>,
19 #[prost(bool, optional, tag = "9")]
20 pub enable_custom_emoji: ::core::option::Option<bool>,
21 #[prost(bool, optional, tag = "10")]
22 pub enable_emoji_picker: ::core::option::Option<bool>,
23 #[prost(int64, optional, tag = "11")]
24 pub time_between_user_typing_updates_milliseconds: ::core::option::Option<i64>,
25 #[prost(bool, optional, tag = "12")]
26 pub enable_file_search: ::core::option::Option<bool>,
27 #[prost(bool, optional, tag = "13")]
28 pub enable_user_typing_messages: ::core::option::Option<bool>,
29 #[prost(bool, optional, tag = "14")]
30 pub enable_user_statuses: ::core::option::Option<bool>,
31 #[prost(bool, optional, tag = "15")]
32 pub enable_email_invitations: ::core::option::Option<bool>,
33 #[prost(bool, optional, tag = "16")]
34 pub enable_svgs: ::core::option::Option<bool>,
35 #[prost(bool, optional, tag = "17")]
36 pub allow_persistent_notifications: ::core::option::Option<bool>,
37 #[prost(int32, optional, tag = "18")]
38 pub persistent_notification_interval_minutes: ::core::option::Option<i32>,
39 #[prost(int32, optional, tag = "19")]
40 pub persistent_notification_max_count: ::core::option::Option<i32>,
41 #[prost(int32, optional, tag = "20")]
42 pub persistent_notification_max_recipients: ::core::option::Option<i32>,
43 #[prost(int32, optional, tag = "21")]
44 pub feature_flag_sync_interval_seconds: ::core::option::Option<i32>,
45 #[prost(bool, optional, tag = "22")]
46 pub allow_synced_drafts: ::core::option::Option<bool>,
47}
48#[derive(serde::Serialize, serde::Deserialize)]
49#[derive(Clone, PartialEq, ::prost::Message)]
50pub struct ConfigServices {
51 #[prost(string, optional, tag = "1")]
52 pub common_service_grpc_url: ::core::option::Option<::prost::alloc::string::String>,
53 #[prost(string, optional, tag = "2")]
54 pub user_service_grpc_url: ::core::option::Option<::prost::alloc::string::String>,
55 #[prost(string, optional, tag = "3")]
56 pub products_service_grpc_url: ::core::option::Option<
57 ::prost::alloc::string::String,
58 >,
59 #[prost(string, optional, tag = "4")]
60 pub jaeger_collector_url: ::core::option::Option<::prost::alloc::string::String>,
61 #[prost(string, optional, tag = "5")]
62 pub common_service_prometheus_url: ::core::option::Option<
63 ::prost::alloc::string::String,
64 >,
65 #[prost(string, optional, tag = "6")]
66 pub user_service_prometheus_url: ::core::option::Option<
67 ::prost::alloc::string::String,
68 >,
69 #[prost(string, optional, tag = "7")]
70 pub products_service_prometheus_url: ::core::option::Option<
71 ::prost::alloc::string::String,
72 >,
73 #[prost(int64, optional, tag = "8")]
74 pub users_service_max_receive_message_size_bytes: ::core::option::Option<i64>,
75 #[prost(string, optional, tag = "9")]
76 pub auth_service_grpc_url: ::core::option::Option<::prost::alloc::string::String>,
77 #[prost(string, optional, tag = "10")]
78 pub auth_service_prometheus_url: ::core::option::Option<
79 ::prost::alloc::string::String,
80 >,
81 #[prost(string, tag = "11")]
82 pub search_service_grpc_url: ::prost::alloc::string::String,
83 #[prost(string, tag = "12")]
84 pub search_service_prometheus_url: ::prost::alloc::string::String,
85 #[prost(string, tag = "13")]
86 pub orders_service_grpc_url: ::prost::alloc::string::String,
87 #[prost(string, tag = "14")]
88 pub orders_service_prometheus_url: ::prost::alloc::string::String,
89 #[prost(int64, tag = "15")]
90 pub orders_service_max_receive_message_size_bytes: i64,
91 #[prost(string, tag = "16")]
92 pub inventory_service_grpc_url: ::prost::alloc::string::String,
93 #[prost(string, tag = "17")]
94 pub inventory_service_prometheus_url: ::prost::alloc::string::String,
95 #[prost(int64, tag = "18")]
96 pub inventory_service_max_receive_message_size_bytes: i64,
97}
98#[derive(serde::Serialize, serde::Deserialize)]
99#[derive(Clone, PartialEq, ::prost::Message)]
100pub struct ConfigObservability {
101 #[prost(bool, tag = "1")]
102 pub enable_tracing: bool,
103 #[prost(bool, tag = "2")]
104 pub enable_metrics: bool,
105 #[prost(bool, tag = "3")]
106 pub enable_profiling: bool,
107 #[prost(double, tag = "4")]
108 pub tracing_sample_rate: f64,
109 #[prost(string, tag = "5")]
110 pub jaeger_endpoint: ::prost::alloc::string::String,
111 #[prost(string, tag = "6")]
112 pub prometheus_pushgateway: ::prost::alloc::string::String,
113 #[prost(string, tag = "7")]
114 pub otel_grpc_endpoint: ::prost::alloc::string::String,
115}
116#[derive(serde::Serialize, serde::Deserialize)]
117#[derive(Clone, PartialEq, ::prost::Message)]
118pub struct ConfigOAuth {
119 #[prost(string, optional, tag = "1")]
120 pub oauth_provider_url: ::core::option::Option<::prost::alloc::string::String>,
121 #[prost(string, optional, tag = "2")]
122 pub oauth_client_id: ::core::option::Option<::prost::alloc::string::String>,
123 #[prost(string, optional, tag = "3")]
124 pub oauth_client_secret: ::core::option::Option<::prost::alloc::string::String>,
125 #[prost(string, optional, tag = "4")]
126 pub oauth_db_dsn: ::core::option::Option<::prost::alloc::string::String>,
127 #[prost(string, optional, tag = "5")]
128 pub oauth_redirect_url: ::core::option::Option<::prost::alloc::string::String>,
129 #[prost(string, optional, tag = "6")]
130 pub oauth_login_url: ::core::option::Option<::prost::alloc::string::String>,
131 #[prost(string, optional, tag = "7")]
132 pub oauth_consent_url: ::core::option::Option<::prost::alloc::string::String>,
133 #[prost(string, optional, tag = "8")]
134 pub oauth_response_type: ::core::option::Option<::prost::alloc::string::String>,
135 #[prost(string, repeated, tag = "9")]
136 pub oauth_scope: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
137 #[prost(string, optional, tag = "10")]
138 pub oauth_admin_url: ::core::option::Option<::prost::alloc::string::String>,
139 #[prost(string, optional, tag = "11")]
140 pub oauth_backend_url: ::core::option::Option<::prost::alloc::string::String>,
141 #[prost(string, optional, tag = "12")]
142 pub frontend_login_url: ::core::option::Option<::prost::alloc::string::String>,
143 #[prost(string, optional, tag = "13")]
144 pub frontend_login_error_url: ::core::option::Option<::prost::alloc::string::String>,
145 #[prost(string, repeated, tag = "14")]
146 pub oauth_grant_access_token_audience: ::prost::alloc::vec::Vec<
147 ::prost::alloc::string::String,
148 >,
149}
150#[derive(serde::Serialize, serde::Deserialize)]
151#[derive(Clone, PartialEq, ::prost::Message)]
152pub struct ConfigSecurity {
153 #[prost(int32, optional, tag = "1")]
154 pub access_token_expiry_web_in_hours: ::core::option::Option<i32>,
155 #[prost(int32, optional, tag = "2")]
156 pub access_token_expiry_mobile_in_hours: ::core::option::Option<i32>,
157 #[prost(int32, optional, tag = "3")]
158 pub access_token_expiry_sso_in_hours: ::core::option::Option<i32>,
159 #[prost(int32, optional, tag = "4")]
160 pub access_token_cache_in_minutes: ::core::option::Option<i32>,
161 #[prost(int32, optional, tag = "5")]
162 pub refresh_token_expiry_in_hours: ::core::option::Option<i32>,
163 #[prost(int32, optional, tag = "6")]
164 pub maximum_login_attempts: ::core::option::Option<i32>,
165 #[prost(bool, optional, tag = "7")]
166 pub terminate_sessions_on_password_change: ::core::option::Option<bool>,
167 #[prost(string, optional, tag = "8")]
168 pub email_confirmation_url: ::core::option::Option<::prost::alloc::string::String>,
169 #[prost(string, optional, tag = "9")]
170 pub password_reset_url: ::core::option::Option<::prost::alloc::string::String>,
171 #[prost(uint32, optional, tag = "10")]
172 pub token_confirmation_expiry_in_hours: ::core::option::Option<u32>,
173 #[prost(uint32, optional, tag = "11")]
174 pub token_password_reset_expiry_in_hours: ::core::option::Option<u32>,
175 #[prost(bool, optional, tag = "12")]
176 pub enable_insecure_outgoing_connections: ::core::option::Option<bool>,
177 #[prost(bool, optional, tag = "13")]
178 pub enable_multifactor_authentication: ::core::option::Option<bool>,
179 #[prost(bool, optional, tag = "14")]
180 pub enforce_multifactor_authentication: ::core::option::Option<bool>,
181 #[prost(bool, optional, tag = "15")]
182 pub enable_oauth_service_provider: ::core::option::Option<bool>,
183 #[prost(bool, optional, tag = "16")]
184 pub enable_outgoing_oauth_connections: ::core::option::Option<bool>,
185 #[prost(string, optional, tag = "17")]
186 pub allow_cors_from: ::core::option::Option<::prost::alloc::string::String>,
187 #[prost(string, optional, tag = "18")]
188 pub cors_exposed_headers: ::core::option::Option<::prost::alloc::string::String>,
189 #[prost(bool, optional, tag = "19")]
190 pub cors_allow_credentials: ::core::option::Option<bool>,
191 #[prost(bool, optional, tag = "20")]
192 pub cors_debug: ::core::option::Option<bool>,
193 #[prost(bool, optional, tag = "21")]
194 pub allow_cookies_for_subdomains: ::core::option::Option<bool>,
195}
196#[derive(serde::Serialize, serde::Deserialize)]
197#[derive(Clone, PartialEq, ::prost::Message)]
198pub struct CacheConfig {
199 #[prost(string, optional, tag = "1")]
200 pub cache_type: ::core::option::Option<::prost::alloc::string::String>,
201 #[prost(string, optional, tag = "2")]
202 pub redis_address: ::core::option::Option<::prost::alloc::string::String>,
203 #[prost(string, optional, tag = "3")]
204 pub redis_password: ::core::option::Option<::prost::alloc::string::String>,
205 #[prost(int32, optional, tag = "4")]
206 pub redis_db: ::core::option::Option<i32>,
207 #[prost(string, optional, tag = "5")]
208 pub redis_cache_prefix: ::core::option::Option<::prost::alloc::string::String>,
209 #[prost(bool, optional, tag = "6")]
210 pub disable_client_cache: ::core::option::Option<bool>,
211}
212#[derive(serde::Serialize, serde::Deserialize)]
213#[derive(Clone, PartialEq, ::prost::Message)]
214pub struct ConfigMetrics {
215 #[prost(bool, optional, tag = "1")]
216 pub enable: ::core::option::Option<bool>,
217 #[prost(int32, optional, tag = "2")]
218 pub block_profile_rate: ::core::option::Option<i32>,
219 #[prost(string, optional, tag = "3")]
220 pub listen_address: ::core::option::Option<::prost::alloc::string::String>,
221 #[prost(bool, optional, tag = "4")]
222 pub enable_client_metrics: ::core::option::Option<bool>,
223 #[prost(bool, optional, tag = "5")]
224 pub enable_notification_metrics: ::core::option::Option<bool>,
225 #[prost(string, repeated, tag = "6")]
226 pub client_side_user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
227}
228#[derive(serde::Serialize, serde::Deserialize)]
229#[derive(Clone, PartialEq, ::prost::Message)]
230pub struct ConfigSso {
231 #[prost(bool, optional, tag = "1")]
232 pub enable: ::core::option::Option<bool>,
233 #[prost(string, optional, tag = "2")]
234 pub secret: ::core::option::Option<::prost::alloc::string::String>,
235 #[prost(string, optional, tag = "3")]
236 pub id: ::core::option::Option<::prost::alloc::string::String>,
237 #[prost(string, optional, tag = "4")]
238 pub scope: ::core::option::Option<::prost::alloc::string::String>,
239 #[prost(string, optional, tag = "5")]
240 pub auth_endpoint: ::core::option::Option<::prost::alloc::string::String>,
241 #[prost(string, optional, tag = "6")]
242 pub token_endpoint: ::core::option::Option<::prost::alloc::string::String>,
243 #[prost(string, optional, tag = "7")]
244 pub user_api_endpoint: ::core::option::Option<::prost::alloc::string::String>,
245 #[prost(string, optional, tag = "8")]
246 pub discovery_endpoint: ::core::option::Option<::prost::alloc::string::String>,
247 #[prost(string, optional, tag = "9")]
248 pub button_text: ::core::option::Option<::prost::alloc::string::String>,
249 #[prost(string, optional, tag = "10")]
250 pub button_color: ::core::option::Option<::prost::alloc::string::String>,
251}
252#[derive(serde::Serialize, serde::Deserialize)]
253#[derive(Clone, PartialEq, ::prost::Message)]
254pub struct ConfigSql {
255 #[prost(string, optional, tag = "1")]
256 pub driver_name: ::core::option::Option<::prost::alloc::string::String>,
257 #[prost(string, optional, tag = "2")]
258 pub data_source: ::core::option::Option<::prost::alloc::string::String>,
259 #[prost(int32, optional, tag = "3")]
260 pub max_idle_conns: ::core::option::Option<i32>,
261 #[prost(int32, optional, tag = "4")]
262 pub conn_max_lifetime_milliseconds: ::core::option::Option<i32>,
263 #[prost(int32, optional, tag = "5")]
264 pub conn_max_idle_time_milliseconds: ::core::option::Option<i32>,
265 #[prost(int32, optional, tag = "6")]
266 pub max_open_conns: ::core::option::Option<i32>,
267 #[prost(bool, optional, tag = "7")]
268 pub trace: ::core::option::Option<bool>,
269 #[prost(string, optional, tag = "8")]
270 pub at_rest_encrypt_key: ::core::option::Option<::prost::alloc::string::String>,
271 #[prost(int32, optional, tag = "9")]
272 pub query_timeout: ::core::option::Option<i32>,
273 #[prost(bool, optional, tag = "10")]
274 pub disable_database_search: ::core::option::Option<bool>,
275}
276#[derive(serde::Serialize, serde::Deserialize)]
277#[derive(Clone, Copy, PartialEq, ::prost::Message)]
278pub struct ConfigPassword {
279 #[prost(int32, optional, tag = "1")]
280 pub minimum_length: ::core::option::Option<i32>,
281 #[prost(int32, optional, tag = "2")]
282 pub maximum_length: ::core::option::Option<i32>,
283 #[prost(bool, optional, tag = "3")]
284 pub lowercase: ::core::option::Option<bool>,
285 #[prost(bool, optional, tag = "4")]
286 pub number: ::core::option::Option<bool>,
287 #[prost(bool, optional, tag = "5")]
288 pub uppercase: ::core::option::Option<bool>,
289 #[prost(bool, optional, tag = "6")]
290 pub symbol: ::core::option::Option<bool>,
291 #[prost(bool, optional, tag = "7")]
292 pub enable_forgot_link: ::core::option::Option<bool>,
293}
294#[derive(serde::Serialize, serde::Deserialize)]
295#[derive(Clone, PartialEq, ::prost::Message)]
296pub struct ConfigFile {
297 #[prost(bool, optional, tag = "1")]
298 pub enable_file_attachments: ::core::option::Option<bool>,
299 #[prost(bool, optional, tag = "2")]
300 pub enable_mobile_upload: ::core::option::Option<bool>,
301 #[prost(bool, optional, tag = "3")]
302 pub enable_mobile_download: ::core::option::Option<bool>,
303 #[prost(int64, optional, tag = "4")]
304 pub max_image_resolution: ::core::option::Option<i64>,
305 #[prost(int64, optional, tag = "5")]
306 pub max_image_decoder_concurrency: ::core::option::Option<i64>,
307 #[prost(string, optional, tag = "6")]
308 pub driver_name: ::core::option::Option<::prost::alloc::string::String>,
309 #[prost(string, optional, tag = "7")]
310 pub amazon_s3_access_key_id: ::core::option::Option<::prost::alloc::string::String>,
311 #[prost(string, optional, tag = "8")]
312 pub amazon_s3_secret_access_key: ::core::option::Option<
313 ::prost::alloc::string::String,
314 >,
315 #[prost(string, optional, tag = "9")]
316 pub amazon_s3_bucket: ::core::option::Option<::prost::alloc::string::String>,
317 #[prost(string, optional, tag = "10")]
318 pub amazon_s3_path_prefix: ::core::option::Option<::prost::alloc::string::String>,
319 #[prost(string, optional, tag = "11")]
320 pub amazon_s3_region: ::core::option::Option<::prost::alloc::string::String>,
321 #[prost(string, optional, tag = "12")]
322 pub amazon_s3_endpoint: ::core::option::Option<::prost::alloc::string::String>,
323 #[prost(bool, optional, tag = "13")]
324 pub amazon_s3_ssl: ::core::option::Option<bool>,
325 #[prost(bool, optional, tag = "14")]
326 pub amazon_s3_sign_v2: ::core::option::Option<bool>,
327 #[prost(bool, optional, tag = "15")]
328 pub amazon_s3_sse: ::core::option::Option<bool>,
329 #[prost(bool, optional, tag = "16")]
330 pub amazon_s3_trace: ::core::option::Option<bool>,
331 #[prost(int64, optional, tag = "17")]
332 pub amazon_s3_request_timeout_milliseconds: ::core::option::Option<i64>,
333 #[prost(int64, optional, tag = "18")]
334 pub amazon_s3_upload_part_size_bytes: ::core::option::Option<i64>,
335 #[prost(string, optional, tag = "19")]
336 pub amazon_s3_storage_class: ::core::option::Option<::prost::alloc::string::String>,
337}
338#[derive(serde::Serialize, serde::Deserialize)]
339#[derive(Clone, PartialEq, ::prost::Message)]
340pub struct ConfigEmail {
341 #[prost(bool, optional, tag = "1")]
342 pub send_email_notifications: ::core::option::Option<bool>,
343 #[prost(bool, optional, tag = "2")]
344 pub require_email_verification: ::core::option::Option<bool>,
345 #[prost(string, optional, tag = "3")]
346 pub feedback_email: ::core::option::Option<::prost::alloc::string::String>,
347 #[prost(string, optional, tag = "4")]
348 pub reply_to_address: ::core::option::Option<::prost::alloc::string::String>,
349 #[prost(bool, optional, tag = "5")]
350 pub enable_smtp_auth: ::core::option::Option<bool>,
351 #[prost(string, optional, tag = "6")]
352 pub smtp_username: ::core::option::Option<::prost::alloc::string::String>,
353 #[prost(string, optional, tag = "7")]
354 pub smtp_password: ::core::option::Option<::prost::alloc::string::String>,
355 #[prost(string, optional, tag = "8")]
356 pub smtp_server: ::core::option::Option<::prost::alloc::string::String>,
357 #[prost(string, optional, tag = "9")]
358 pub smtp_port: ::core::option::Option<::prost::alloc::string::String>,
359 #[prost(int32, optional, tag = "10")]
360 pub smtp_server_timeout: ::core::option::Option<i32>,
361 #[prost(string, optional, tag = "11")]
362 pub connection_security: ::core::option::Option<::prost::alloc::string::String>,
363 #[prost(bool, optional, tag = "12")]
364 pub send_push_notifications: ::core::option::Option<bool>,
365 #[prost(string, optional, tag = "13")]
366 pub push_notification_server: ::core::option::Option<::prost::alloc::string::String>,
367 #[prost(string, optional, tag = "14")]
368 pub push_notification_contents: ::core::option::Option<
369 ::prost::alloc::string::String,
370 >,
371 #[prost(int32, optional, tag = "15")]
372 pub push_notification_buffer: ::core::option::Option<i32>,
373 #[prost(bool, optional, tag = "16")]
374 pub enable_email_batching: ::core::option::Option<bool>,
375 #[prost(int32, optional, tag = "17")]
376 pub email_batching_buffer_size: ::core::option::Option<i32>,
377 #[prost(int32, optional, tag = "18")]
378 pub email_batching_interval: ::core::option::Option<i32>,
379 #[prost(bool, optional, tag = "19")]
380 pub skip_server_certificate_verification: ::core::option::Option<bool>,
381 #[prost(string, optional, tag = "20")]
382 pub email_notification_contents_type: ::core::option::Option<
383 ::prost::alloc::string::String,
384 >,
385 #[prost(string, optional, tag = "21")]
386 pub login_button_color: ::core::option::Option<::prost::alloc::string::String>,
387 #[prost(string, optional, tag = "22")]
388 pub login_button_border_color: ::core::option::Option<
389 ::prost::alloc::string::String,
390 >,
391 #[prost(string, optional, tag = "23")]
392 pub login_button_text_color: ::core::option::Option<::prost::alloc::string::String>,
393 #[prost(int32, optional, tag = "24")]
394 pub rate_limiting_memory_size: ::core::option::Option<i32>,
395 #[prost(int32, optional, tag = "25")]
396 pub rate_limiting_per_hour: ::core::option::Option<i32>,
397 #[prost(int32, optional, tag = "26")]
398 pub rate_limiting_max_burst: ::core::option::Option<i32>,
399}
400#[derive(serde::Serialize, serde::Deserialize)]
401#[derive(Clone, PartialEq, ::prost::Message)]
402pub struct ConfigRateLimit {
403 #[prost(bool, optional, tag = "1")]
404 pub enable: ::core::option::Option<bool>,
405 #[prost(int32, optional, tag = "2")]
406 pub per_sec: ::core::option::Option<i32>,
407 #[prost(int32, optional, tag = "3")]
408 pub max_burst: ::core::option::Option<i32>,
409 #[prost(int32, optional, tag = "4")]
410 pub memory_store_size: ::core::option::Option<i32>,
411 #[prost(bool, optional, tag = "5")]
412 pub vary_by_remote_addr: ::core::option::Option<bool>,
413 #[prost(bool, optional, tag = "6")]
414 pub vary_by_user: ::core::option::Option<bool>,
415 #[prost(string, tag = "7")]
416 pub vary_by_header: ::prost::alloc::string::String,
417}
418#[derive(serde::Serialize, serde::Deserialize)]
419#[derive(Clone, Copy, PartialEq, ::prost::Message)]
420pub struct ConfigPrivacy {
421 #[prost(bool, optional, tag = "1")]
422 pub show_email_address: ::core::option::Option<bool>,
423 #[prost(bool, optional, tag = "2")]
424 pub show_full_name: ::core::option::Option<bool>,
425}
426#[derive(serde::Serialize, serde::Deserialize)]
427#[derive(Clone, PartialEq, ::prost::Message)]
428pub struct ConfigSupport {
429 #[prost(string, optional, tag = "1")]
430 pub terms_of_service_link: ::core::option::Option<::prost::alloc::string::String>,
431 #[prost(string, optional, tag = "2")]
432 pub privacy_policy_link: ::core::option::Option<::prost::alloc::string::String>,
433 #[prost(string, optional, tag = "3")]
434 pub about_link: ::core::option::Option<::prost::alloc::string::String>,
435 #[prost(string, optional, tag = "4")]
436 pub help_link: ::core::option::Option<::prost::alloc::string::String>,
437 #[prost(string, optional, tag = "5")]
438 pub report_a_problem_link: ::core::option::Option<::prost::alloc::string::String>,
439 #[prost(string, optional, tag = "6")]
440 pub forgot_password_link: ::core::option::Option<::prost::alloc::string::String>,
441 #[prost(string, optional, tag = "7")]
442 pub support_email: ::core::option::Option<::prost::alloc::string::String>,
443}
444#[derive(serde::Serialize, serde::Deserialize)]
445#[derive(Clone, PartialEq, ::prost::Message)]
446pub struct ConfigLocalization {
447 #[prost(string, optional, tag = "1")]
448 pub default_server_locale: ::core::option::Option<::prost::alloc::string::String>,
449 #[prost(string, optional, tag = "2")]
450 pub default_client_locale: ::core::option::Option<::prost::alloc::string::String>,
451 #[prost(string, repeated, tag = "3")]
452 pub available_locales: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
453}
454#[derive(serde::Serialize, serde::Deserialize)]
455#[derive(Clone, PartialEq, ::prost::Message)]
456pub struct ConfigLdap {
457 #[prost(bool, optional, tag = "1")]
459 pub enable: ::core::option::Option<bool>,
460 #[prost(bool, optional, tag = "2")]
461 pub enable_sync: ::core::option::Option<bool>,
462 #[prost(string, optional, tag = "3")]
463 pub ldap_server: ::core::option::Option<::prost::alloc::string::String>,
464 #[prost(int32, optional, tag = "4")]
465 pub ldap_port: ::core::option::Option<i32>,
466 #[prost(string, optional, tag = "5")]
467 pub connection_security: ::core::option::Option<::prost::alloc::string::String>,
468 #[prost(string, optional, tag = "6")]
469 pub base_dn: ::core::option::Option<::prost::alloc::string::String>,
470 #[prost(string, optional, tag = "7")]
471 pub bind_username: ::core::option::Option<::prost::alloc::string::String>,
472 #[prost(string, optional, tag = "8")]
473 pub bind_password: ::core::option::Option<::prost::alloc::string::String>,
474 #[prost(int32, optional, tag = "9")]
475 pub maximum_login_attempts: ::core::option::Option<i32>,
476 #[prost(string, optional, tag = "10")]
478 pub user_filter: ::core::option::Option<::prost::alloc::string::String>,
479 #[prost(string, optional, tag = "11")]
480 pub group_filter: ::core::option::Option<::prost::alloc::string::String>,
481 #[prost(bool, optional, tag = "12")]
482 pub enable_admin_filter: ::core::option::Option<bool>,
483 #[prost(string, optional, tag = "13")]
484 pub admin_filter: ::core::option::Option<::prost::alloc::string::String>,
485 #[prost(string, optional, tag = "14")]
487 pub group_display_name_attribute: ::core::option::Option<
488 ::prost::alloc::string::String,
489 >,
490 #[prost(string, optional, tag = "15")]
491 pub group_id_attribute: ::core::option::Option<::prost::alloc::string::String>,
492 #[prost(string, optional, tag = "16")]
494 pub first_name_attribute: ::core::option::Option<::prost::alloc::string::String>,
495 #[prost(string, optional, tag = "17")]
496 pub last_name_attribute: ::core::option::Option<::prost::alloc::string::String>,
497 #[prost(string, optional, tag = "18")]
498 pub email_attribute: ::core::option::Option<::prost::alloc::string::String>,
499 #[prost(string, optional, tag = "19")]
500 pub username_attribute: ::core::option::Option<::prost::alloc::string::String>,
501 #[prost(string, optional, tag = "20")]
502 pub nickname_attribute: ::core::option::Option<::prost::alloc::string::String>,
503 #[prost(string, optional, tag = "21")]
504 pub id_attribute: ::core::option::Option<::prost::alloc::string::String>,
505 #[prost(string, optional, tag = "22")]
506 pub position_attribute: ::core::option::Option<::prost::alloc::string::String>,
507 #[prost(string, optional, tag = "23")]
508 pub login_id_attribute: ::core::option::Option<::prost::alloc::string::String>,
509 #[prost(string, optional, tag = "24")]
510 pub picture_attribute: ::core::option::Option<::prost::alloc::string::String>,
511 #[prost(int32, optional, tag = "25")]
513 pub sync_interval_minutes: ::core::option::Option<i32>,
514 #[prost(int32, optional, tag = "26")]
516 pub query_timeout: ::core::option::Option<i32>,
517 #[prost(int32, optional, tag = "27")]
518 pub max_page_size: ::core::option::Option<i32>,
519 #[prost(string, optional, tag = "28")]
521 pub login_field_name: ::core::option::Option<::prost::alloc::string::String>,
522 #[prost(string, optional, tag = "29")]
523 pub login_button_color: ::core::option::Option<::prost::alloc::string::String>,
524 #[prost(string, optional, tag = "30")]
525 pub login_button_border_color: ::core::option::Option<
526 ::prost::alloc::string::String,
527 >,
528 #[prost(string, optional, tag = "31")]
529 pub login_button_text_color: ::core::option::Option<::prost::alloc::string::String>,
530}
531#[derive(serde::Serialize, serde::Deserialize)]
532#[derive(Clone, PartialEq, ::prost::Message)]
533pub struct ConfigSaml {
534 #[prost(bool, optional, tag = "1")]
536 pub enable: ::core::option::Option<bool>,
537 #[prost(bool, optional, tag = "2")]
538 pub enable_sync_with_ldap: ::core::option::Option<bool>,
539 #[prost(bool, optional, tag = "3")]
540 pub enable_sync_with_ldap_include_auth: ::core::option::Option<bool>,
541 #[prost(bool, optional, tag = "4")]
542 pub ignore_guests_ldap_sync: ::core::option::Option<bool>,
543 #[prost(bool, optional, tag = "5")]
544 pub verify: ::core::option::Option<bool>,
545 #[prost(bool, optional, tag = "6")]
546 pub encrypt: ::core::option::Option<bool>,
547 #[prost(bool, optional, tag = "7")]
548 pub sign_request: ::core::option::Option<bool>,
549 #[prost(string, optional, tag = "8")]
550 pub idp_url: ::core::option::Option<::prost::alloc::string::String>,
551 #[prost(string, optional, tag = "9")]
552 pub idp_descriptor_url: ::core::option::Option<::prost::alloc::string::String>,
553 #[prost(string, optional, tag = "10")]
554 pub idp_metadata_url: ::core::option::Option<::prost::alloc::string::String>,
555 #[prost(string, optional, tag = "11")]
556 pub service_provider_identifier: ::core::option::Option<
557 ::prost::alloc::string::String,
558 >,
559 #[prost(string, optional, tag = "12")]
560 pub assertion_consumer_service_url: ::core::option::Option<
561 ::prost::alloc::string::String,
562 >,
563 #[prost(string, optional, tag = "13")]
564 pub signature_algorithm: ::core::option::Option<::prost::alloc::string::String>,
565 #[prost(string, optional, tag = "14")]
566 pub canonical_algorithm: ::core::option::Option<::prost::alloc::string::String>,
567 #[prost(string, optional, tag = "15")]
568 pub scoping_idp_provider_id: ::core::option::Option<::prost::alloc::string::String>,
569 #[prost(string, optional, tag = "16")]
570 pub scoping_idp_name: ::core::option::Option<::prost::alloc::string::String>,
571 #[prost(string, optional, tag = "17")]
572 pub idp_certificate_file: ::core::option::Option<::prost::alloc::string::String>,
573 #[prost(string, optional, tag = "18")]
574 pub public_certificate_file: ::core::option::Option<::prost::alloc::string::String>,
575 #[prost(string, optional, tag = "19")]
576 pub private_key_file: ::core::option::Option<::prost::alloc::string::String>,
577 #[prost(string, optional, tag = "20")]
579 pub id_attribute: ::core::option::Option<::prost::alloc::string::String>,
580 #[prost(bool, optional, tag = "21")]
581 pub enable_admin_attribute: ::core::option::Option<bool>,
582 #[prost(string, optional, tag = "22")]
583 pub admin_attribute: ::core::option::Option<::prost::alloc::string::String>,
584 #[prost(string, optional, tag = "23")]
585 pub first_name_attribute: ::core::option::Option<::prost::alloc::string::String>,
586 #[prost(string, optional, tag = "24")]
587 pub last_name_attribute: ::core::option::Option<::prost::alloc::string::String>,
588 #[prost(string, optional, tag = "25")]
589 pub email_attribute: ::core::option::Option<::prost::alloc::string::String>,
590 #[prost(string, optional, tag = "26")]
591 pub username_attribute: ::core::option::Option<::prost::alloc::string::String>,
592 #[prost(string, optional, tag = "27")]
593 pub nickname_attribute: ::core::option::Option<::prost::alloc::string::String>,
594 #[prost(string, optional, tag = "28")]
595 pub locale_attribute: ::core::option::Option<::prost::alloc::string::String>,
596 #[prost(string, optional, tag = "29")]
597 pub position_attribute: ::core::option::Option<::prost::alloc::string::String>,
598 #[prost(string, optional, tag = "30")]
599 pub login_button_text: ::core::option::Option<::prost::alloc::string::String>,
600 #[prost(string, optional, tag = "31")]
601 pub login_button_color: ::core::option::Option<::prost::alloc::string::String>,
602 #[prost(string, optional, tag = "32")]
603 pub login_button_border_color: ::core::option::Option<
604 ::prost::alloc::string::String,
605 >,
606 #[prost(string, optional, tag = "33")]
607 pub login_button_text_color: ::core::option::Option<::prost::alloc::string::String>,
608}
609#[derive(serde::Serialize, serde::Deserialize)]
610#[derive(Clone, PartialEq, ::prost::Message)]
611pub struct ConfigNativeApp {
612 #[prost(string, repeated, tag = "1")]
613 pub app_custom_url_schemes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
614 #[prost(string, optional, tag = "2")]
615 pub app_download_link: ::core::option::Option<::prost::alloc::string::String>,
616 #[prost(string, optional, tag = "3")]
617 pub android_app_download_link: ::core::option::Option<
618 ::prost::alloc::string::String,
619 >,
620 #[prost(string, optional, tag = "4")]
621 pub ios_app_download_link: ::core::option::Option<::prost::alloc::string::String>,
622 #[prost(bool, optional, tag = "5")]
623 pub mobile_external_browser: ::core::option::Option<bool>,
624 #[prost(bool, optional, tag = "6")]
625 pub mobile_enable_biometrics: ::core::option::Option<bool>,
626 #[prost(bool, optional, tag = "7")]
627 pub mobile_prevent_screen_capture: ::core::option::Option<bool>,
628 #[prost(bool, optional, tag = "8")]
629 pub mobile_jailbreak_protection: ::core::option::Option<bool>,
630}
631#[derive(serde::Serialize, serde::Deserialize)]
632#[derive(Clone, PartialEq, ::prost::Message)]
633pub struct ConfigMeilisearch {
634 #[prost(string, repeated, tag = "1")]
635 pub server_urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
636 #[prost(string, optional, tag = "2")]
638 pub master_key: ::core::option::Option<::prost::alloc::string::String>,
639 #[prost(bool, optional, tag = "3")]
640 pub enable_indexing: ::core::option::Option<bool>,
641 #[prost(bool, optional, tag = "4")]
642 pub enable_searching: ::core::option::Option<bool>,
643 #[prost(bool, optional, tag = "5")]
644 pub enable_autocomplete: ::core::option::Option<bool>,
645 #[prost(int32, optional, tag = "6")]
647 pub max_concurrency: ::core::option::Option<i32>,
648 #[prost(int32, optional, tag = "7")]
649 pub request_timeout_seconds: ::core::option::Option<i32>,
650 #[prost(string, optional, tag = "8")]
652 pub index_prefix: ::core::option::Option<::prost::alloc::string::String>,
653 #[prost(int32, optional, tag = "9")]
655 pub search_cutoff_ms: ::core::option::Option<i32>,
656 #[prost(bool, optional, tag = "10")]
657 pub enable_typo_tolerance: ::core::option::Option<bool>,
658 #[prost(string, tag = "11")]
659 pub kafka_broker: ::prost::alloc::string::String,
660 #[prost(string, tag = "12")]
661 pub kafka_group_id: ::prost::alloc::string::String,
662 #[prost(string, tag = "13")]
663 pub kafak_topic: ::prost::alloc::string::String,
664 #[prost(string, tag = "14")]
665 pub kafak_topic_dlq: ::prost::alloc::string::String,
666 #[prost(int32, optional, tag = "15")]
668 pub task_max_wait_ms: ::core::option::Option<i32>,
669 #[prost(int32, optional, tag = "16")]
671 pub task_max_retries: ::core::option::Option<i32>,
672 #[prost(int32, optional, tag = "17")]
674 pub task_backoff_base_ms: ::core::option::Option<i32>,
675 #[prost(int32, optional, tag = "18")]
677 pub shutdown_wait_secs: ::core::option::Option<i32>,
678}
679#[derive(serde::Serialize, serde::Deserialize)]
680#[derive(Clone, PartialEq, ::prost::Message)]
681pub struct ConfigBleve {
682 #[prost(string, optional, tag = "1")]
683 pub index_dir: ::core::option::Option<::prost::alloc::string::String>,
684 #[prost(bool, optional, tag = "2")]
685 pub enable_indexing: ::core::option::Option<bool>,
686 #[prost(bool, optional, tag = "3")]
687 pub enable_searching: ::core::option::Option<bool>,
688 #[prost(bool, optional, tag = "4")]
689 pub enable_autocomplete: ::core::option::Option<bool>,
690 #[prost(int32, optional, tag = "5")]
691 pub bulk_indexing_time_window_seconds: ::core::option::Option<i32>,
692 #[prost(int32, optional, tag = "6")]
693 pub batch_size: ::core::option::Option<i32>,
694}
695#[derive(serde::Serialize, serde::Deserialize)]
696#[derive(Clone, PartialEq, ::prost::Message)]
697pub struct ConfigDataRetention {
698 #[prost(bool, optional, tag = "1")]
699 pub enable_message_deletion: ::core::option::Option<bool>,
700 #[prost(bool, optional, tag = "2")]
701 pub enable_file_deletion: ::core::option::Option<bool>,
702 #[prost(bool, optional, tag = "3")]
703 pub enable_boards_deletion: ::core::option::Option<bool>,
704 #[prost(int32, optional, tag = "4")]
705 pub message_retention_hours: ::core::option::Option<i32>,
706 #[prost(int32, optional, tag = "5")]
707 pub file_retention_hours: ::core::option::Option<i32>,
708 #[prost(int32, optional, tag = "6")]
709 pub boards_retention_days: ::core::option::Option<i32>,
710 #[prost(string, optional, tag = "7")]
711 pub deletion_job_start_time: ::core::option::Option<::prost::alloc::string::String>,
712 #[prost(int32, optional, tag = "8")]
713 pub batch_size: ::core::option::Option<i32>,
714 #[prost(int32, optional, tag = "9")]
715 pub time_between_batches_milliseconds: ::core::option::Option<i32>,
716 #[prost(int32, optional, tag = "10")]
717 pub retention_ids_batch_size: ::core::option::Option<i32>,
718}
719#[derive(serde::Serialize, serde::Deserialize)]
720#[derive(Clone, PartialEq, ::prost::Message)]
721pub struct ConfigImageProxy {
722 #[prost(bool, optional, tag = "1")]
723 pub enable: ::core::option::Option<bool>,
724 #[prost(string, optional, tag = "2")]
725 pub image_proxy_type: ::core::option::Option<::prost::alloc::string::String>,
726 #[prost(string, optional, tag = "3")]
727 pub remote_image_proxy_url: ::core::option::Option<::prost::alloc::string::String>,
728 #[prost(string, optional, tag = "4")]
729 pub remote_image_proxy_options: ::core::option::Option<
730 ::prost::alloc::string::String,
731 >,
732}
733#[derive(serde::Serialize, serde::Deserialize)]
734#[derive(Clone, PartialEq, ::prost::Message)]
735pub struct ConfigProducts {
736 #[prost(uint64, tag = "1")]
737 pub product_image_max_size_mb: u64,
738 #[prost(string, repeated, tag = "2")]
739 pub product_image_accepted_formats: ::prost::alloc::vec::Vec<
740 ::prost::alloc::string::String,
741 >,
742 #[prost(uint64, tag = "3")]
743 pub product_image_max_width: u64,
744 #[prost(uint64, tag = "4")]
745 pub product_image_max_height: u64,
746 #[prost(uint64, tag = "5")]
747 pub product_image_min_width: u64,
748 #[prost(uint64, tag = "6")]
749 pub product_image_min_height: u64,
750 #[prost(uint64, tag = "7")]
751 pub product_images_min_count_per_variant: u64,
752 #[prost(uint64, tag = "8")]
753 pub product_images_max_count_per_variant: u64,
754 #[prost(uint64, tag = "9")]
755 pub product_media_max_direct_uploading_size_mb: u64,
756}
757#[derive(serde::Serialize, serde::Deserialize)]
758#[derive(Clone, PartialEq, ::prost::Message)]
759pub struct Config {
760 #[prost(message, optional, tag = "1")]
761 pub main: ::core::option::Option<ConfigMain>,
762 #[prost(message, optional, tag = "2")]
763 pub services: ::core::option::Option<ConfigServices>,
764 #[prost(message, optional, tag = "3")]
765 pub security: ::core::option::Option<ConfigSecurity>,
766 #[prost(message, optional, tag = "4")]
767 pub cache: ::core::option::Option<CacheConfig>,
768 #[prost(message, optional, tag = "5")]
769 pub metrics: ::core::option::Option<ConfigMetrics>,
770 #[prost(message, optional, tag = "6")]
771 pub sso: ::core::option::Option<ConfigSso>,
772 #[prost(message, optional, tag = "7")]
773 pub sql: ::core::option::Option<ConfigSql>,
774 #[prost(message, optional, tag = "8")]
775 pub password: ::core::option::Option<ConfigPassword>,
776 #[prost(message, optional, tag = "9")]
777 pub file: ::core::option::Option<ConfigFile>,
778 #[prost(message, optional, tag = "10")]
779 pub email: ::core::option::Option<ConfigEmail>,
780 #[prost(message, optional, tag = "11")]
781 pub rate_limit: ::core::option::Option<ConfigRateLimit>,
782 #[prost(message, optional, tag = "12")]
783 pub privacy: ::core::option::Option<ConfigPrivacy>,
784 #[prost(message, optional, tag = "13")]
785 pub support: ::core::option::Option<ConfigSupport>,
786 #[prost(message, optional, tag = "14")]
787 pub localization: ::core::option::Option<ConfigLocalization>,
788 #[prost(message, optional, tag = "15")]
789 pub ldap: ::core::option::Option<ConfigLdap>,
790 #[prost(message, optional, tag = "16")]
791 pub saml: ::core::option::Option<ConfigSaml>,
792 #[prost(message, optional, tag = "17")]
793 pub native_app: ::core::option::Option<ConfigNativeApp>,
794 #[prost(message, optional, tag = "18")]
795 pub meilisearch: ::core::option::Option<ConfigMeilisearch>,
796 #[prost(message, optional, tag = "19")]
797 pub bleve: ::core::option::Option<ConfigBleve>,
798 #[prost(message, optional, tag = "20")]
799 pub data_retention: ::core::option::Option<ConfigDataRetention>,
800 #[prost(message, optional, tag = "21")]
801 pub image_proxy: ::core::option::Option<ConfigImageProxy>,
802 #[prost(message, optional, tag = "22")]
803 pub oauth: ::core::option::Option<ConfigOAuth>,
804 #[prost(message, optional, tag = "23")]
805 pub products: ::core::option::Option<ConfigProducts>,
806 #[prost(message, optional, tag = "24")]
807 pub observability: ::core::option::Option<ConfigObservability>,
808}
809#[derive(serde::Serialize, serde::Deserialize)]
810#[derive(Clone, Copy, PartialEq, ::prost::Message)]
811pub struct ConfigGetRequest {
812 #[prost(enumeration = "Environment", tag = "1")]
813 pub env: i32,
814}
815#[derive(serde::Serialize, serde::Deserialize)]
816#[derive(Clone, PartialEq, ::prost::Message)]
817pub struct ConfigGetResponse {
818 #[prost(oneof = "config_get_response::Response", tags = "1, 2")]
819 pub response: ::core::option::Option<config_get_response::Response>,
820}
821pub mod config_get_response {
823 #[derive(serde::Serialize, serde::Deserialize)]
824 #[derive(Clone, PartialEq, ::prost::Oneof)]
825 pub enum Response {
826 #[prost(message, tag = "1")]
827 Data(super::Config),
828 #[prost(message, tag = "2")]
829 Error(super::super::super::shared::v1::AppError),
830 }
831}
832#[derive(serde::Serialize, serde::Deserialize)]
833#[derive(Clone, PartialEq, ::prost::Message)]
834pub struct ConfigUpdateRequest {
835 #[prost(message, optional, tag = "1")]
836 pub config: ::core::option::Option<Config>,
837}
838#[derive(serde::Serialize, serde::Deserialize)]
839#[derive(Clone, PartialEq, ::prost::Message)]
840pub struct ConfigUpdateResponse {
841 #[prost(oneof = "config_update_response::Response", tags = "1, 2")]
842 pub response: ::core::option::Option<config_update_response::Response>,
843}
844pub mod config_update_response {
846 #[derive(serde::Serialize, serde::Deserialize)]
847 #[derive(Clone, PartialEq, ::prost::Oneof)]
848 pub enum Response {
849 #[prost(message, tag = "1")]
850 Data(super::Config),
851 #[prost(message, tag = "2")]
852 Error(super::super::super::shared::v1::AppError),
853 }
854}
855#[derive(serde::Serialize, serde::Deserialize)]
856#[derive(Clone, PartialEq, ::prost::Message)]
857pub struct ConfigListenerResponse {
858 #[prost(oneof = "config_listener_response::Response", tags = "1, 2")]
859 pub response: ::core::option::Option<config_listener_response::Response>,
860}
861pub mod config_listener_response {
863 #[derive(serde::Serialize, serde::Deserialize)]
864 #[derive(Clone, PartialEq, ::prost::Oneof)]
865 pub enum Response {
866 #[prost(message, tag = "1")]
867 Data(super::Config),
868 #[prost(message, tag = "2")]
869 Error(super::super::super::shared::v1::AppError),
870 }
871}
872#[derive(serde::Serialize, serde::Deserialize)]
873#[derive(Clone, PartialEq, ::prost::Message)]
874pub struct ConfigListenerRequest {
875 #[prost(string, tag = "1")]
876 pub client_id: ::prost::alloc::string::String,
877}
878#[derive(serde::Serialize, serde::Deserialize)]
879#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
880#[repr(i32)]
881pub enum Environment {
882 Local = 0,
883 Dev = 1,
884 Production = 2,
885}
886impl Environment {
887 pub fn as_str_name(&self) -> &'static str {
892 match self {
893 Self::Local => "LOCAL",
894 Self::Dev => "DEV",
895 Self::Production => "PRODUCTION",
896 }
897 }
898 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
900 match value {
901 "LOCAL" => Some(Self::Local),
902 "DEV" => Some(Self::Dev),
903 "PRODUCTION" => Some(Self::Production),
904 _ => None,
905 }
906 }
907}
908#[derive(serde::Serialize, serde::Deserialize)]
909#[derive(Clone, Copy, PartialEq, ::prost::Message)]
910pub struct TranslationsGetRequest {}
911#[derive(serde::Serialize, serde::Deserialize)]
912#[derive(Clone, PartialEq, ::prost::Message)]
913pub struct TranslationsGetResponse {
914 #[prost(map = "string, message", tag = "1")]
915 pub data: ::std::collections::HashMap<
916 ::prost::alloc::string::String,
917 TranslationElements,
918 >,
919 #[prost(message, optional, tag = "2")]
920 pub error: ::core::option::Option<super::super::shared::v1::AppError>,
921}
922#[derive(serde::Serialize, serde::Deserialize)]
923#[derive(Clone, PartialEq, ::prost::Message)]
924pub struct TranslationsForLangGetRequest {
925 #[prost(string, tag = "1")]
926 pub lang: ::prost::alloc::string::String,
927}
928#[derive(serde::Serialize, serde::Deserialize)]
929#[derive(Clone, PartialEq, ::prost::Message)]
930pub struct TranslationsForLangGetResponse {
931 #[prost(oneof = "translations_for_lang_get_response::Response", tags = "1, 2")]
932 pub response: ::core::option::Option<translations_for_lang_get_response::Response>,
933}
934pub mod translations_for_lang_get_response {
936 #[derive(serde::Serialize, serde::Deserialize)]
937 #[derive(Clone, PartialEq, ::prost::Oneof)]
938 pub enum Response {
939 #[prost(message, tag = "1")]
940 Data(super::TranslationElements),
941 #[prost(message, tag = "2")]
942 Error(super::super::super::shared::v1::AppError),
943 }
944}
945#[derive(serde::Serialize, serde::Deserialize)]
946#[derive(Clone, PartialEq, ::prost::Message)]
947pub struct TranslationElement {
948 #[prost(string, tag = "1")]
949 pub id: ::prost::alloc::string::String,
950 #[prost(string, tag = "2")]
951 pub tr: ::prost::alloc::string::String,
952}
953#[derive(serde::Serialize, serde::Deserialize)]
954#[derive(Clone, PartialEq, ::prost::Message)]
955pub struct TranslationElements {
956 #[prost(message, repeated, tag = "1")]
957 pub trans: ::prost::alloc::vec::Vec<TranslationElement>,
958}
959pub mod common_service_client {
961 #![allow(
962 unused_variables,
963 dead_code,
964 missing_docs,
965 clippy::wildcard_imports,
966 clippy::let_unit_value,
967 )]
968 use tonic::codegen::*;
969 use tonic::codegen::http::Uri;
970 #[derive(Debug, Clone)]
971 pub struct CommonServiceClient<T> {
972 inner: tonic::client::Grpc<T>,
973 }
974 impl CommonServiceClient<tonic::transport::Channel> {
975 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
977 where
978 D: TryInto<tonic::transport::Endpoint>,
979 D::Error: Into<StdError>,
980 {
981 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
982 Ok(Self::new(conn))
983 }
984 }
985 impl<T> CommonServiceClient<T>
986 where
987 T: tonic::client::GrpcService<tonic::body::Body>,
988 T::Error: Into<StdError>,
989 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
990 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
991 {
992 pub fn new(inner: T) -> Self {
993 let inner = tonic::client::Grpc::new(inner);
994 Self { inner }
995 }
996 pub fn with_origin(inner: T, origin: Uri) -> Self {
997 let inner = tonic::client::Grpc::with_origin(inner, origin);
998 Self { inner }
999 }
1000 pub fn with_interceptor<F>(
1001 inner: T,
1002 interceptor: F,
1003 ) -> CommonServiceClient<InterceptedService<T, F>>
1004 where
1005 F: tonic::service::Interceptor,
1006 T::ResponseBody: Default,
1007 T: tonic::codegen::Service<
1008 http::Request<tonic::body::Body>,
1009 Response = http::Response<
1010 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1011 >,
1012 >,
1013 <T as tonic::codegen::Service<
1014 http::Request<tonic::body::Body>,
1015 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1016 {
1017 CommonServiceClient::new(InterceptedService::new(inner, interceptor))
1018 }
1019 #[must_use]
1024 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1025 self.inner = self.inner.send_compressed(encoding);
1026 self
1027 }
1028 #[must_use]
1030 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1031 self.inner = self.inner.accept_compressed(encoding);
1032 self
1033 }
1034 #[must_use]
1038 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1039 self.inner = self.inner.max_decoding_message_size(limit);
1040 self
1041 }
1042 #[must_use]
1046 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1047 self.inner = self.inner.max_encoding_message_size(limit);
1048 self
1049 }
1050 pub async fn ping(
1051 &mut self,
1052 request: impl tonic::IntoRequest<
1053 super::super::super::shared::v1::PingRequest,
1054 >,
1055 ) -> std::result::Result<
1056 tonic::Response<super::super::super::shared::v1::PingResponse>,
1057 tonic::Status,
1058 > {
1059 self.inner
1060 .ready()
1061 .await
1062 .map_err(|e| {
1063 tonic::Status::unknown(
1064 format!("Service was not ready: {}", e.into()),
1065 )
1066 })?;
1067 let codec = tonic::codec::ProstCodec::default();
1068 let path = http::uri::PathAndQuery::from_static(
1069 "/common.v1.CommonService/Ping",
1070 );
1071 let mut req = request.into_request();
1072 req.extensions_mut()
1073 .insert(GrpcMethod::new("common.v1.CommonService", "Ping"));
1074 self.inner.unary(req, path, codec).await
1075 }
1076 pub async fn config_get(
1077 &mut self,
1078 request: impl tonic::IntoRequest<super::ConfigGetRequest>,
1079 ) -> std::result::Result<
1080 tonic::Response<super::ConfigGetResponse>,
1081 tonic::Status,
1082 > {
1083 self.inner
1084 .ready()
1085 .await
1086 .map_err(|e| {
1087 tonic::Status::unknown(
1088 format!("Service was not ready: {}", e.into()),
1089 )
1090 })?;
1091 let codec = tonic::codec::ProstCodec::default();
1092 let path = http::uri::PathAndQuery::from_static(
1093 "/common.v1.CommonService/ConfigGet",
1094 );
1095 let mut req = request.into_request();
1096 req.extensions_mut()
1097 .insert(GrpcMethod::new("common.v1.CommonService", "ConfigGet"));
1098 self.inner.unary(req, path, codec).await
1099 }
1100 pub async fn config_update(
1101 &mut self,
1102 request: impl tonic::IntoRequest<super::ConfigUpdateRequest>,
1103 ) -> std::result::Result<
1104 tonic::Response<super::ConfigUpdateResponse>,
1105 tonic::Status,
1106 > {
1107 self.inner
1108 .ready()
1109 .await
1110 .map_err(|e| {
1111 tonic::Status::unknown(
1112 format!("Service was not ready: {}", e.into()),
1113 )
1114 })?;
1115 let codec = tonic::codec::ProstCodec::default();
1116 let path = http::uri::PathAndQuery::from_static(
1117 "/common.v1.CommonService/ConfigUpdate",
1118 );
1119 let mut req = request.into_request();
1120 req.extensions_mut()
1121 .insert(GrpcMethod::new("common.v1.CommonService", "ConfigUpdate"));
1122 self.inner.unary(req, path, codec).await
1123 }
1124 pub async fn config_listener(
1125 &mut self,
1126 request: impl tonic::IntoRequest<super::ConfigListenerRequest>,
1127 ) -> std::result::Result<
1128 tonic::Response<tonic::codec::Streaming<super::ConfigListenerResponse>>,
1129 tonic::Status,
1130 > {
1131 self.inner
1132 .ready()
1133 .await
1134 .map_err(|e| {
1135 tonic::Status::unknown(
1136 format!("Service was not ready: {}", e.into()),
1137 )
1138 })?;
1139 let codec = tonic::codec::ProstCodec::default();
1140 let path = http::uri::PathAndQuery::from_static(
1141 "/common.v1.CommonService/ConfigListener",
1142 );
1143 let mut req = request.into_request();
1144 req.extensions_mut()
1145 .insert(GrpcMethod::new("common.v1.CommonService", "ConfigListener"));
1146 self.inner.server_streaming(req, path, codec).await
1147 }
1148 pub async fn translations_get(
1149 &mut self,
1150 request: impl tonic::IntoRequest<super::TranslationsGetRequest>,
1151 ) -> std::result::Result<
1152 tonic::Response<super::TranslationsGetResponse>,
1153 tonic::Status,
1154 > {
1155 self.inner
1156 .ready()
1157 .await
1158 .map_err(|e| {
1159 tonic::Status::unknown(
1160 format!("Service was not ready: {}", e.into()),
1161 )
1162 })?;
1163 let codec = tonic::codec::ProstCodec::default();
1164 let path = http::uri::PathAndQuery::from_static(
1165 "/common.v1.CommonService/TranslationsGet",
1166 );
1167 let mut req = request.into_request();
1168 req.extensions_mut()
1169 .insert(GrpcMethod::new("common.v1.CommonService", "TranslationsGet"));
1170 self.inner.unary(req, path, codec).await
1171 }
1172 pub async fn translations_for_lang_get(
1173 &mut self,
1174 request: impl tonic::IntoRequest<super::TranslationsForLangGetRequest>,
1175 ) -> std::result::Result<
1176 tonic::Response<super::TranslationsForLangGetResponse>,
1177 tonic::Status,
1178 > {
1179 self.inner
1180 .ready()
1181 .await
1182 .map_err(|e| {
1183 tonic::Status::unknown(
1184 format!("Service was not ready: {}", e.into()),
1185 )
1186 })?;
1187 let codec = tonic::codec::ProstCodec::default();
1188 let path = http::uri::PathAndQuery::from_static(
1189 "/common.v1.CommonService/TranslationsForLangGet",
1190 );
1191 let mut req = request.into_request();
1192 req.extensions_mut()
1193 .insert(
1194 GrpcMethod::new("common.v1.CommonService", "TranslationsForLangGet"),
1195 );
1196 self.inner.unary(req, path, codec).await
1197 }
1198 }
1199}
1200pub mod common_service_server {
1202 #![allow(
1203 unused_variables,
1204 dead_code,
1205 missing_docs,
1206 clippy::wildcard_imports,
1207 clippy::let_unit_value,
1208 )]
1209 use tonic::codegen::*;
1210 #[async_trait]
1212 pub trait CommonService: std::marker::Send + std::marker::Sync + 'static {
1213 async fn ping(
1214 &self,
1215 request: tonic::Request<super::super::super::shared::v1::PingRequest>,
1216 ) -> std::result::Result<
1217 tonic::Response<super::super::super::shared::v1::PingResponse>,
1218 tonic::Status,
1219 >;
1220 async fn config_get(
1221 &self,
1222 request: tonic::Request<super::ConfigGetRequest>,
1223 ) -> std::result::Result<
1224 tonic::Response<super::ConfigGetResponse>,
1225 tonic::Status,
1226 >;
1227 async fn config_update(
1228 &self,
1229 request: tonic::Request<super::ConfigUpdateRequest>,
1230 ) -> std::result::Result<
1231 tonic::Response<super::ConfigUpdateResponse>,
1232 tonic::Status,
1233 >;
1234 type ConfigListenerStream: tonic::codegen::tokio_stream::Stream<
1236 Item = std::result::Result<super::ConfigListenerResponse, tonic::Status>,
1237 >
1238 + std::marker::Send
1239 + 'static;
1240 async fn config_listener(
1241 &self,
1242 request: tonic::Request<super::ConfigListenerRequest>,
1243 ) -> std::result::Result<
1244 tonic::Response<Self::ConfigListenerStream>,
1245 tonic::Status,
1246 >;
1247 async fn translations_get(
1248 &self,
1249 request: tonic::Request<super::TranslationsGetRequest>,
1250 ) -> std::result::Result<
1251 tonic::Response<super::TranslationsGetResponse>,
1252 tonic::Status,
1253 >;
1254 async fn translations_for_lang_get(
1255 &self,
1256 request: tonic::Request<super::TranslationsForLangGetRequest>,
1257 ) -> std::result::Result<
1258 tonic::Response<super::TranslationsForLangGetResponse>,
1259 tonic::Status,
1260 >;
1261 }
1262 #[derive(Debug)]
1263 pub struct CommonServiceServer<T> {
1264 inner: Arc<T>,
1265 accept_compression_encodings: EnabledCompressionEncodings,
1266 send_compression_encodings: EnabledCompressionEncodings,
1267 max_decoding_message_size: Option<usize>,
1268 max_encoding_message_size: Option<usize>,
1269 }
1270 impl<T> CommonServiceServer<T> {
1271 pub fn new(inner: T) -> Self {
1272 Self::from_arc(Arc::new(inner))
1273 }
1274 pub fn from_arc(inner: Arc<T>) -> Self {
1275 Self {
1276 inner,
1277 accept_compression_encodings: Default::default(),
1278 send_compression_encodings: Default::default(),
1279 max_decoding_message_size: None,
1280 max_encoding_message_size: None,
1281 }
1282 }
1283 pub fn with_interceptor<F>(
1284 inner: T,
1285 interceptor: F,
1286 ) -> InterceptedService<Self, F>
1287 where
1288 F: tonic::service::Interceptor,
1289 {
1290 InterceptedService::new(Self::new(inner), interceptor)
1291 }
1292 #[must_use]
1294 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1295 self.accept_compression_encodings.enable(encoding);
1296 self
1297 }
1298 #[must_use]
1300 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1301 self.send_compression_encodings.enable(encoding);
1302 self
1303 }
1304 #[must_use]
1308 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1309 self.max_decoding_message_size = Some(limit);
1310 self
1311 }
1312 #[must_use]
1316 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1317 self.max_encoding_message_size = Some(limit);
1318 self
1319 }
1320 }
1321 impl<T, B> tonic::codegen::Service<http::Request<B>> for CommonServiceServer<T>
1322 where
1323 T: CommonService,
1324 B: Body + std::marker::Send + 'static,
1325 B::Error: Into<StdError> + std::marker::Send + 'static,
1326 {
1327 type Response = http::Response<tonic::body::Body>;
1328 type Error = std::convert::Infallible;
1329 type Future = BoxFuture<Self::Response, Self::Error>;
1330 fn poll_ready(
1331 &mut self,
1332 _cx: &mut Context<'_>,
1333 ) -> Poll<std::result::Result<(), Self::Error>> {
1334 Poll::Ready(Ok(()))
1335 }
1336 fn call(&mut self, req: http::Request<B>) -> Self::Future {
1337 match req.uri().path() {
1338 "/common.v1.CommonService/Ping" => {
1339 #[allow(non_camel_case_types)]
1340 struct PingSvc<T: CommonService>(pub Arc<T>);
1341 impl<
1342 T: CommonService,
1343 > tonic::server::UnaryService<
1344 super::super::super::shared::v1::PingRequest,
1345 > for PingSvc<T> {
1346 type Response = super::super::super::shared::v1::PingResponse;
1347 type Future = BoxFuture<
1348 tonic::Response<Self::Response>,
1349 tonic::Status,
1350 >;
1351 fn call(
1352 &mut self,
1353 request: tonic::Request<
1354 super::super::super::shared::v1::PingRequest,
1355 >,
1356 ) -> Self::Future {
1357 let inner = Arc::clone(&self.0);
1358 let fut = async move {
1359 <T as CommonService>::ping(&inner, request).await
1360 };
1361 Box::pin(fut)
1362 }
1363 }
1364 let accept_compression_encodings = self.accept_compression_encodings;
1365 let send_compression_encodings = self.send_compression_encodings;
1366 let max_decoding_message_size = self.max_decoding_message_size;
1367 let max_encoding_message_size = self.max_encoding_message_size;
1368 let inner = self.inner.clone();
1369 let fut = async move {
1370 let method = PingSvc(inner);
1371 let codec = tonic::codec::ProstCodec::default();
1372 let mut grpc = tonic::server::Grpc::new(codec)
1373 .apply_compression_config(
1374 accept_compression_encodings,
1375 send_compression_encodings,
1376 )
1377 .apply_max_message_size_config(
1378 max_decoding_message_size,
1379 max_encoding_message_size,
1380 );
1381 let res = grpc.unary(method, req).await;
1382 Ok(res)
1383 };
1384 Box::pin(fut)
1385 }
1386 "/common.v1.CommonService/ConfigGet" => {
1387 #[allow(non_camel_case_types)]
1388 struct ConfigGetSvc<T: CommonService>(pub Arc<T>);
1389 impl<
1390 T: CommonService,
1391 > tonic::server::UnaryService<super::ConfigGetRequest>
1392 for ConfigGetSvc<T> {
1393 type Response = super::ConfigGetResponse;
1394 type Future = BoxFuture<
1395 tonic::Response<Self::Response>,
1396 tonic::Status,
1397 >;
1398 fn call(
1399 &mut self,
1400 request: tonic::Request<super::ConfigGetRequest>,
1401 ) -> Self::Future {
1402 let inner = Arc::clone(&self.0);
1403 let fut = async move {
1404 <T as CommonService>::config_get(&inner, request).await
1405 };
1406 Box::pin(fut)
1407 }
1408 }
1409 let accept_compression_encodings = self.accept_compression_encodings;
1410 let send_compression_encodings = self.send_compression_encodings;
1411 let max_decoding_message_size = self.max_decoding_message_size;
1412 let max_encoding_message_size = self.max_encoding_message_size;
1413 let inner = self.inner.clone();
1414 let fut = async move {
1415 let method = ConfigGetSvc(inner);
1416 let codec = tonic::codec::ProstCodec::default();
1417 let mut grpc = tonic::server::Grpc::new(codec)
1418 .apply_compression_config(
1419 accept_compression_encodings,
1420 send_compression_encodings,
1421 )
1422 .apply_max_message_size_config(
1423 max_decoding_message_size,
1424 max_encoding_message_size,
1425 );
1426 let res = grpc.unary(method, req).await;
1427 Ok(res)
1428 };
1429 Box::pin(fut)
1430 }
1431 "/common.v1.CommonService/ConfigUpdate" => {
1432 #[allow(non_camel_case_types)]
1433 struct ConfigUpdateSvc<T: CommonService>(pub Arc<T>);
1434 impl<
1435 T: CommonService,
1436 > tonic::server::UnaryService<super::ConfigUpdateRequest>
1437 for ConfigUpdateSvc<T> {
1438 type Response = super::ConfigUpdateResponse;
1439 type Future = BoxFuture<
1440 tonic::Response<Self::Response>,
1441 tonic::Status,
1442 >;
1443 fn call(
1444 &mut self,
1445 request: tonic::Request<super::ConfigUpdateRequest>,
1446 ) -> Self::Future {
1447 let inner = Arc::clone(&self.0);
1448 let fut = async move {
1449 <T as CommonService>::config_update(&inner, request).await
1450 };
1451 Box::pin(fut)
1452 }
1453 }
1454 let accept_compression_encodings = self.accept_compression_encodings;
1455 let send_compression_encodings = self.send_compression_encodings;
1456 let max_decoding_message_size = self.max_decoding_message_size;
1457 let max_encoding_message_size = self.max_encoding_message_size;
1458 let inner = self.inner.clone();
1459 let fut = async move {
1460 let method = ConfigUpdateSvc(inner);
1461 let codec = tonic::codec::ProstCodec::default();
1462 let mut grpc = tonic::server::Grpc::new(codec)
1463 .apply_compression_config(
1464 accept_compression_encodings,
1465 send_compression_encodings,
1466 )
1467 .apply_max_message_size_config(
1468 max_decoding_message_size,
1469 max_encoding_message_size,
1470 );
1471 let res = grpc.unary(method, req).await;
1472 Ok(res)
1473 };
1474 Box::pin(fut)
1475 }
1476 "/common.v1.CommonService/ConfigListener" => {
1477 #[allow(non_camel_case_types)]
1478 struct ConfigListenerSvc<T: CommonService>(pub Arc<T>);
1479 impl<
1480 T: CommonService,
1481 > tonic::server::ServerStreamingService<super::ConfigListenerRequest>
1482 for ConfigListenerSvc<T> {
1483 type Response = super::ConfigListenerResponse;
1484 type ResponseStream = T::ConfigListenerStream;
1485 type Future = BoxFuture<
1486 tonic::Response<Self::ResponseStream>,
1487 tonic::Status,
1488 >;
1489 fn call(
1490 &mut self,
1491 request: tonic::Request<super::ConfigListenerRequest>,
1492 ) -> Self::Future {
1493 let inner = Arc::clone(&self.0);
1494 let fut = async move {
1495 <T as CommonService>::config_listener(&inner, request).await
1496 };
1497 Box::pin(fut)
1498 }
1499 }
1500 let accept_compression_encodings = self.accept_compression_encodings;
1501 let send_compression_encodings = self.send_compression_encodings;
1502 let max_decoding_message_size = self.max_decoding_message_size;
1503 let max_encoding_message_size = self.max_encoding_message_size;
1504 let inner = self.inner.clone();
1505 let fut = async move {
1506 let method = ConfigListenerSvc(inner);
1507 let codec = tonic::codec::ProstCodec::default();
1508 let mut grpc = tonic::server::Grpc::new(codec)
1509 .apply_compression_config(
1510 accept_compression_encodings,
1511 send_compression_encodings,
1512 )
1513 .apply_max_message_size_config(
1514 max_decoding_message_size,
1515 max_encoding_message_size,
1516 );
1517 let res = grpc.server_streaming(method, req).await;
1518 Ok(res)
1519 };
1520 Box::pin(fut)
1521 }
1522 "/common.v1.CommonService/TranslationsGet" => {
1523 #[allow(non_camel_case_types)]
1524 struct TranslationsGetSvc<T: CommonService>(pub Arc<T>);
1525 impl<
1526 T: CommonService,
1527 > tonic::server::UnaryService<super::TranslationsGetRequest>
1528 for TranslationsGetSvc<T> {
1529 type Response = super::TranslationsGetResponse;
1530 type Future = BoxFuture<
1531 tonic::Response<Self::Response>,
1532 tonic::Status,
1533 >;
1534 fn call(
1535 &mut self,
1536 request: tonic::Request<super::TranslationsGetRequest>,
1537 ) -> Self::Future {
1538 let inner = Arc::clone(&self.0);
1539 let fut = async move {
1540 <T as CommonService>::translations_get(&inner, request)
1541 .await
1542 };
1543 Box::pin(fut)
1544 }
1545 }
1546 let accept_compression_encodings = self.accept_compression_encodings;
1547 let send_compression_encodings = self.send_compression_encodings;
1548 let max_decoding_message_size = self.max_decoding_message_size;
1549 let max_encoding_message_size = self.max_encoding_message_size;
1550 let inner = self.inner.clone();
1551 let fut = async move {
1552 let method = TranslationsGetSvc(inner);
1553 let codec = tonic::codec::ProstCodec::default();
1554 let mut grpc = tonic::server::Grpc::new(codec)
1555 .apply_compression_config(
1556 accept_compression_encodings,
1557 send_compression_encodings,
1558 )
1559 .apply_max_message_size_config(
1560 max_decoding_message_size,
1561 max_encoding_message_size,
1562 );
1563 let res = grpc.unary(method, req).await;
1564 Ok(res)
1565 };
1566 Box::pin(fut)
1567 }
1568 "/common.v1.CommonService/TranslationsForLangGet" => {
1569 #[allow(non_camel_case_types)]
1570 struct TranslationsForLangGetSvc<T: CommonService>(pub Arc<T>);
1571 impl<
1572 T: CommonService,
1573 > tonic::server::UnaryService<super::TranslationsForLangGetRequest>
1574 for TranslationsForLangGetSvc<T> {
1575 type Response = super::TranslationsForLangGetResponse;
1576 type Future = BoxFuture<
1577 tonic::Response<Self::Response>,
1578 tonic::Status,
1579 >;
1580 fn call(
1581 &mut self,
1582 request: tonic::Request<super::TranslationsForLangGetRequest>,
1583 ) -> Self::Future {
1584 let inner = Arc::clone(&self.0);
1585 let fut = async move {
1586 <T as CommonService>::translations_for_lang_get(
1587 &inner,
1588 request,
1589 )
1590 .await
1591 };
1592 Box::pin(fut)
1593 }
1594 }
1595 let accept_compression_encodings = self.accept_compression_encodings;
1596 let send_compression_encodings = self.send_compression_encodings;
1597 let max_decoding_message_size = self.max_decoding_message_size;
1598 let max_encoding_message_size = self.max_encoding_message_size;
1599 let inner = self.inner.clone();
1600 let fut = async move {
1601 let method = TranslationsForLangGetSvc(inner);
1602 let codec = tonic::codec::ProstCodec::default();
1603 let mut grpc = tonic::server::Grpc::new(codec)
1604 .apply_compression_config(
1605 accept_compression_encodings,
1606 send_compression_encodings,
1607 )
1608 .apply_max_message_size_config(
1609 max_decoding_message_size,
1610 max_encoding_message_size,
1611 );
1612 let res = grpc.unary(method, req).await;
1613 Ok(res)
1614 };
1615 Box::pin(fut)
1616 }
1617 _ => {
1618 Box::pin(async move {
1619 let mut response = http::Response::new(
1620 tonic::body::Body::default(),
1621 );
1622 let headers = response.headers_mut();
1623 headers
1624 .insert(
1625 tonic::Status::GRPC_STATUS,
1626 (tonic::Code::Unimplemented as i32).into(),
1627 );
1628 headers
1629 .insert(
1630 http::header::CONTENT_TYPE,
1631 tonic::metadata::GRPC_CONTENT_TYPE,
1632 );
1633 Ok(response)
1634 })
1635 }
1636 }
1637 }
1638 }
1639 impl<T> Clone for CommonServiceServer<T> {
1640 fn clone(&self) -> Self {
1641 let inner = self.inner.clone();
1642 Self {
1643 inner,
1644 accept_compression_encodings: self.accept_compression_encodings,
1645 send_compression_encodings: self.send_compression_encodings,
1646 max_decoding_message_size: self.max_decoding_message_size,
1647 max_encoding_message_size: self.max_encoding_message_size,
1648 }
1649 }
1650 }
1651 pub const SERVICE_NAME: &str = "common.v1.CommonService";
1653 impl<T> tonic::server::NamedService for CommonServiceServer<T> {
1654 const NAME: &'static str = SERVICE_NAME;
1655 }
1656}