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