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
117
118
use std::{
collections::HashMap,
ops::{Deref, DerefMut},
};
#[derive(Debug, Clone)]
pub struct Params<'a>(HashMap<&'a str, &'a str>);
impl<'a> Params<'a> {
pub fn set_gateway_interface(mut self, gateway_interface: &'a str) -> Self {
self.insert("GATEWAY_INTERFACE", gateway_interface);
self
}
pub fn set_server_software(mut self, server_software: &'a str) -> Self {
self.insert("SERVER_SOFTWARE", server_software);
self
}
pub fn set_server_protocol(mut self, server_protocol: &'a str) -> Self {
self.insert("SERVER_PROTOCOL", server_protocol);
self
}
pub fn set_request_method(mut self, request_method: &'a str) -> Self {
self.insert("REQUEST_METHOD", request_method);
self
}
pub fn set_script_filename(mut self, script_filename: &'a str) -> Self {
self.insert("SCRIPT_FILENAME", script_filename);
self
}
pub fn set_script_name(mut self, script_name: &'a str) -> Self {
self.insert("SCRIPT_NAME", script_name);
self
}
pub fn set_query_string(mut self, query_string: &'a str) -> Self {
self.insert("QUERY_STRING", query_string);
self
}
pub fn set_request_uri(mut self, request_uri: &'a str) -> Self {
self.insert("REQUEST_URI", request_uri);
self
}
pub fn set_document_root(mut self, document_root: &'a str) -> Self {
self.insert("DOCUMENT_ROOT", document_root);
self
}
pub fn set_document_uri(mut self, document_uri: &'a str) -> Self {
self.insert("DOCUMENT_URI", document_uri);
self
}
pub fn set_remote_addr(mut self, remote_addr: &'a str) -> Self {
self.insert("REMOTE_ADDR", remote_addr);
self
}
pub fn set_remote_port(mut self, remote_port: &'a str) -> Self {
self.insert("REMOTE_PORT", remote_port);
self
}
pub fn set_server_addr(mut self, server_addr: &'a str) -> Self {
self.insert("SERVER_ADDR", server_addr);
self
}
pub fn set_server_port(mut self, server_port: &'a str) -> Self {
self.insert("SERVER_PORT", server_port);
self
}
pub fn set_server_name(mut self, server_name: &'a str) -> Self {
self.insert("SERVER_NAME", server_name);
self
}
pub fn set_content_type(mut self, content_type: &'a str) -> Self {
self.insert("CONTENT_TYPE", content_type);
self
}
pub fn set_content_length(mut self, content_length: &'a str) -> Self {
self.insert("CONTENT_LENGTH", content_length);
self
}
}
impl<'a> Default for Params<'a> {
fn default() -> Self {
Params(HashMap::new())
.set_gateway_interface("FastCGI/1.0")
.set_server_software("fastcgi-client-rs")
.set_server_protocol("HTTP/1.1")
}
}
impl<'a> Deref for Params<'a> {
type Target = HashMap<&'a str, &'a str>;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> DerefMut for Params<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}