@@ -2,31 +2,29 @@ use super::*;
2
2
use crate :: error:: { Error , ErrorKind } ;
3
3
use crate :: request_options:: LeaseId ;
4
4
use crate :: { RequestId , SessionToken } ;
5
-
6
5
use chrono:: { DateTime , FixedOffset , Utc } ;
7
- use http:: header:: { DATE , ETAG , LAST_MODIFIED , SERVER } ;
8
6
use std:: str:: FromStr ;
9
7
10
8
pub fn get_option_str_from_headers < ' a > (
11
9
headers : & ' a Headers ,
12
- key : & str ,
10
+ key : & HeaderName ,
13
11
) -> crate :: Result < Option < & ' a str > > {
14
- let h = match headers. get ( key. to_owned ( ) ) {
12
+ let h = match headers. get ( key) {
15
13
Some ( h) => h,
16
14
None => return Ok ( None ) ,
17
15
} ;
18
16
Ok ( Some ( h. as_str ( ) ) )
19
17
}
20
18
21
- pub fn get_str_from_headers < ' a > ( headers : & ' a Headers , key : & str ) -> crate :: Result < & ' a str > {
19
+ pub fn get_str_from_headers < ' a > ( headers : & ' a Headers , key : & HeaderName ) -> crate :: Result < & ' a str > {
22
20
get_option_str_from_headers ( headers, key) ?. ok_or_else ( || {
23
21
Error :: with_message ( ErrorKind :: DataConversion , || {
24
- format ! ( "could not find '{key}' in headers" )
22
+ format ! ( "could not find '{key:? }' in headers" )
25
23
} )
26
24
} )
27
25
}
28
26
29
- pub fn get_option_from_headers < T > ( headers : & Headers , key : & str ) -> crate :: Result < Option < T > >
27
+ pub fn get_option_from_headers < T > ( headers : & Headers , key : & HeaderName ) -> crate :: Result < Option < T > >
30
28
where
31
29
T : std:: str:: FromStr + ' static ,
32
30
T :: Err : std:: error:: Error + Send + Sync ,
@@ -41,15 +39,15 @@ where
41
39
ErrorKind :: DataConversion ,
42
40
e,
43
41
format ! (
44
- "failed to parse header '{}' as {:?}" ,
42
+ "failed to parse header '{:? }' as {:?}" ,
45
43
key,
46
44
std:: any:: TypeId :: of:: <T >( )
47
45
) ,
48
46
)
49
47
} ) ?) )
50
48
}
51
49
52
- pub fn get_from_headers < T > ( headers : & Headers , key : & str ) -> crate :: Result < T >
50
+ pub fn get_from_headers < T > ( headers : & Headers , key : & HeaderName ) -> crate :: Result < T >
53
51
where
54
52
T : std:: str:: FromStr + ' static ,
55
53
T :: Err : std:: error:: Error + Send + Sync ,
59
57
ErrorKind :: DataConversion ,
60
58
e,
61
59
format ! (
62
- "failed to parse header '{}' as {:?}" ,
60
+ "failed to parse header '{:? }' as {:?}" ,
63
61
key,
64
62
std:: any:: TypeId :: of:: <T >( )
65
63
) ,
@@ -104,36 +102,36 @@ where
104
102
}
105
103
106
104
pub fn lease_id_from_headers ( headers : & Headers ) -> crate :: Result < LeaseId > {
107
- get_from_headers ( headers, LEASE_ID )
105
+ get_from_headers ( headers, & LEASE_ID )
108
106
}
109
107
110
108
pub fn request_id_from_headers ( headers : & Headers ) -> crate :: Result < RequestId > {
111
- get_from_headers ( headers, REQUEST_ID )
109
+ get_from_headers ( headers, & REQUEST_ID )
112
110
}
113
111
114
112
pub fn client_request_id_from_headers_optional ( headers : & Headers ) -> Option < String > {
115
- get_option_from_headers ( headers, CLIENT_REQUEST_ID )
113
+ get_option_from_headers ( headers, & CLIENT_REQUEST_ID )
116
114
. ok ( )
117
115
. flatten ( )
118
116
}
119
117
120
118
pub fn last_modified_from_headers_optional (
121
119
headers : & Headers ,
122
120
) -> crate :: Result < Option < DateTime < Utc > > > {
123
- get_option_from_headers ( headers, LAST_MODIFIED . as_str ( ) )
121
+ get_option_from_headers ( headers, & LAST_MODIFIED )
124
122
}
125
123
126
124
pub fn date_from_headers ( headers : & Headers ) -> crate :: Result < DateTime < Utc > > {
127
- rfc2822_from_headers_mandatory ( headers, DATE . as_str ( ) )
125
+ rfc2822_from_headers_mandatory ( headers, & DATE )
128
126
}
129
127
130
128
pub fn last_modified_from_headers ( headers : & Headers ) -> crate :: Result < DateTime < Utc > > {
131
- rfc2822_from_headers_mandatory ( headers, LAST_MODIFIED . as_str ( ) )
129
+ rfc2822_from_headers_mandatory ( headers, & LAST_MODIFIED )
132
130
}
133
131
134
132
pub fn rfc2822_from_headers_mandatory (
135
133
headers : & Headers ,
136
- header_name : & str ,
134
+ header_name : & HeaderName ,
137
135
) -> crate :: Result < DateTime < Utc > > {
138
136
let date = get_str_from_headers ( headers, header_name) ?;
139
137
utc_date_from_rfc2822 ( date)
@@ -147,63 +145,63 @@ pub fn utc_date_from_rfc2822(date: &str) -> crate::Result<DateTime<Utc>> {
147
145
pub fn continuation_token_from_headers_optional (
148
146
headers : & Headers ,
149
147
) -> crate :: Result < Option < String > > {
150
- Ok ( get_option_str_from_headers ( headers, CONTINUATION ) ?. map ( String :: from) )
148
+ Ok ( get_option_str_from_headers ( headers, & CONTINUATION ) ?. map ( String :: from) )
151
149
}
152
150
153
151
pub fn sku_name_from_headers ( headers : & Headers ) -> crate :: Result < String > {
154
- Ok ( get_str_from_headers ( headers, SKU_NAME ) ?. to_owned ( ) )
152
+ Ok ( get_str_from_headers ( headers, & SKU_NAME ) ?. to_owned ( ) )
155
153
}
156
154
157
155
pub fn account_kind_from_headers ( headers : & Headers ) -> crate :: Result < String > {
158
- Ok ( get_str_from_headers ( headers, ACCOUNT_KIND ) ?. to_owned ( ) )
156
+ Ok ( get_str_from_headers ( headers, & ACCOUNT_KIND ) ?. to_owned ( ) )
159
157
}
160
158
161
159
pub fn etag_from_headers_optional ( headers : & Headers ) -> crate :: Result < Option < String > > {
162
- Ok ( get_option_str_from_headers ( headers, ETAG . as_str ( ) ) ?. map ( String :: from) )
160
+ Ok ( get_option_str_from_headers ( headers, & ETAG ) ?. map ( String :: from) )
163
161
}
164
162
165
163
pub fn etag_from_headers ( headers : & Headers ) -> crate :: Result < String > {
166
- Ok ( get_str_from_headers ( headers, ETAG . as_str ( ) ) ?. to_owned ( ) )
164
+ Ok ( get_str_from_headers ( headers, & ETAG ) ?. to_owned ( ) )
167
165
}
168
166
169
167
pub fn lease_time_from_headers ( headers : & Headers ) -> crate :: Result < u8 > {
170
- get_from_headers ( headers, LEASE_TIME )
168
+ get_from_headers ( headers, & LEASE_TIME )
171
169
}
172
170
173
171
#[ cfg( not( feature = "azurite_workaround" ) ) ]
174
172
pub fn delete_type_permanent_from_headers ( headers : & Headers ) -> crate :: Result < bool > {
175
- get_from_headers ( headers, DELETE_TYPE_PERMANENT )
173
+ get_from_headers ( headers, & DELETE_TYPE_PERMANENT )
176
174
}
177
175
178
176
#[ cfg( feature = "azurite_workaround" ) ]
179
177
pub fn delete_type_permanent_from_headers ( headers : & Headers ) -> crate :: Result < Option < bool > > {
180
- get_option_from_headers ( headers, DELETE_TYPE_PERMANENT )
178
+ get_option_from_headers ( headers, & DELETE_TYPE_PERMANENT )
181
179
}
182
180
183
181
pub fn sequence_number_from_headers ( headers : & Headers ) -> crate :: Result < u64 > {
184
- get_from_headers ( headers, BLOB_SEQUENCE_NUMBER )
182
+ get_from_headers ( headers, & BLOB_SEQUENCE_NUMBER )
185
183
}
186
184
187
185
pub fn session_token_from_headers ( headers : & Headers ) -> crate :: Result < SessionToken > {
188
- get_str_from_headers ( headers, SESSION_TOKEN ) . map ( ToOwned :: to_owned)
186
+ get_str_from_headers ( headers, & SESSION_TOKEN ) . map ( ToOwned :: to_owned)
189
187
}
190
188
191
189
pub fn server_from_headers ( headers : & Headers ) -> crate :: Result < & str > {
192
- get_str_from_headers ( headers, SERVER . as_str ( ) )
190
+ get_str_from_headers ( headers, & SERVER )
193
191
}
194
192
195
193
pub fn version_from_headers ( headers : & Headers ) -> crate :: Result < & str > {
196
- get_str_from_headers ( headers, VERSION )
194
+ get_str_from_headers ( headers, & VERSION )
197
195
}
198
196
199
197
pub fn request_server_encrypted_from_headers ( headers : & Headers ) -> crate :: Result < bool > {
200
- get_from_headers ( headers, REQUEST_SERVER_ENCRYPTED )
198
+ get_from_headers ( headers, & REQUEST_SERVER_ENCRYPTED )
201
199
}
202
200
203
201
pub fn content_type_from_headers ( headers : & Headers ) -> crate :: Result < & str > {
204
- get_str_from_headers ( headers, http :: header :: CONTENT_TYPE . as_str ( ) )
202
+ get_str_from_headers ( headers, & CONTENT_TYPE )
205
203
}
206
204
207
205
pub fn item_count_from_headers ( headers : & Headers ) -> crate :: Result < u32 > {
208
- get_from_headers ( headers, ITEM_COUNT )
206
+ get_from_headers ( headers, & ITEM_COUNT )
209
207
}
0 commit comments