1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
mod call;
mod data;
use data::{
DelogCall,
DelogLevel,
};
pub async fn delog(
data: DelogCall,
) -> Result<(), reqwest::Error> {
use std::env;
use DelogCall::*;
let level = DelogLevel::Info;
let endpoint: String = env::var("DELOG_ENDPOINT").unwrap_or("".to_string());
let token: String = env::var("DELOG_TOKEN").unwrap_or("".to_string());
let project: String = env::var("DELOG_PROJECT").unwrap_or("".to_string());
let space: String = env::var("DELOG_SPACE").unwrap_or("".to_string());
let format: String = env::var("DELOG_FORMAT").unwrap_or("".to_string());
let method: String = env::var("DELOG_METHOD").unwrap_or("".to_string());
let extradata: String = env::var("DELOG_EXTRADATA").unwrap_or("".to_string());
match data {
Str(data) => {
call::delog_call(
String::from(data),
level,
endpoint,
token,
project,
space,
format,
method,
extradata,
).await?;
}
Data(data) => {
let data_level: DelogLevel = data.level.unwrap_or(level);
let data_endpoint = String::from(data.endpoint.unwrap_or(&endpoint));
let data_token = String::from(data.token.unwrap_or(&token));
let data_project = String::from(data.project.unwrap_or(&project));
let data_space = String::from(data.space.unwrap_or(&space));
let data_format = String::from(data.format.unwrap_or(&format));
let data_method = String::from(data.method.unwrap_or(&method));
let data_extradata = String::from(data.extradata.unwrap_or(&extradata));
call::delog_call(
String::from(data.text),
data_level,
data_endpoint,
data_token,
data_project,
data_space,
data_format,
data_method,
data_extradata,
).await?;
}
}
Ok(())
}
#[cfg(test)]
mod tests {
use super::{
delog,
DelogCall,
DelogLevel,
data,
};
use data::{
DelogData,
};
#[tokio::test]
async fn it_works_with_test_token() {
let delog_data = DelogData {
text: "it works with test token",
level: Some(DelogLevel::Trace),
endpoint: Some("http://localhost:56365/delog"),
token: Some("__TEST_MODE__"),
..Default::default()
};
let _sent = delog(DelogCall::Data(delog_data)).await;
}
}