rsiot/components_config/http_client/
config.rs1use std::time::Duration;
2
3use crate::{message::MsgDataBound, serde_utils::SerdeAlgKind};
4
5use super::{request_input::RequestInput, request_periodic::RequestPeriodic};
6
7#[derive(Clone, Debug)]
9pub struct Config<TMessage>
10where
11 TMessage: MsgDataBound,
12{
13 pub serde_alg: SerdeAlgKind,
15
16 pub base_url: String,
24 pub timeout: Duration,
26 pub requests_input: Vec<Box<dyn RequestInput<TMessage>>>,
28 pub requests_periodic: Vec<Box<dyn RequestPeriodic<TMessage>>>,
30}
31
32#[cfg(test)]
33mod tests {
34 use std::time::Duration;
35
36 use crate::{message::example_message::*, serde_utils::SerdeAlgKind};
37
38 use super::super::*;
39
40 #[test]
41 fn connect_with_http_server() {
42 Config::<Custom> {
43 serde_alg: SerdeAlgKind::Json,
44 base_url: "http://10.0.6.5:80".into(),
45 timeout: Duration::from_secs(5),
46 requests_input: vec![Box::new(RequestInputConfig::<Custom, (), ()> {
47 serde_alg: SerdeAlgKind::Json,
48 request_kind: RequestKind::Post,
49 endpoint: "/messages".into(),
50 fn_create_request: |_msg| Some(()),
51 fn_process_response_success: |_| vec![],
52 fn_process_response_error: Vec::new,
53 })],
54 requests_periodic: vec![Box::new(RequestPeriodicConfig::<Custom, (), ()> {
55 serde_alg: SerdeAlgKind::Json,
56 request_kind: RequestKind::Get,
57 endpoint: "/messages".into(),
58 period: Duration::from_secs(2),
59 request_body: (),
60 fn_process_response_success: |_| vec![],
61 fn_process_response_error: Vec::new,
62 })],
63 };
64 }
65}