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
use std::collections::HashMap;
use std::hash::Hash;
use mime::Mime;
#[derive(Debug)]
pub enum HttpRequestBody<BK: Eq + Hash + AsRef<str>, BV: AsRef<str>> {
Binary {
content_type: Mime,
body: Vec<u8>,
},
Text {
content_type: Mime,
body: String,
},
FormURLEncoded(HashMap<BK, BV>),
}
impl<BK: Eq + Hash + AsRef<str> + Clone, BV: AsRef<str> + Clone> Clone for HttpRequestBody<BK, BV> {
fn clone(&self) -> HttpRequestBody<BK, BV> {
match self {
HttpRequestBody::Binary {
content_type,
body,
} => {
HttpRequestBody::Binary {
content_type: content_type.clone(),
body: body.clone(),
}
}
HttpRequestBody::Text {
content_type,
body,
} => {
HttpRequestBody::Text {
content_type: content_type.clone(),
body: body.clone(),
}
}
HttpRequestBody::FormURLEncoded(map) => {
let mut new_map = HashMap::new();
for (k, v) in map {
new_map.insert(k.clone(), v.clone());
}
HttpRequestBody::FormURLEncoded(new_map)
}
}
}
}