Skip to content

Commit 2bb13eb

Browse files
committed
Prefactor work to have parse_request accept a function that does the parsing
This will be used parsing with options is implemented
1 parent c353188 commit 2bb13eb

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

src/models/partial_request.rs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -112,11 +112,20 @@ impl FromStr for PartialHttpRequest {
112112

113113
/// Parse a string in to a partial request
114114
fn from_str(s: &str) -> Result<Self, Self::Err> {
115-
parse_request(s)
115+
parse_request(s, parse_first_line)
116116
}
117117
}
118118

119-
fn parse_request(input: &str) -> Result<PartialHttpRequest, Error> {
119+
type FirstLineParts = (
120+
Option<Range<usize>>,
121+
Option<Range<usize>>,
122+
Option<Range<usize>>,
123+
);
124+
125+
fn parse_request<F>(input: &str, parse_first_line: F) -> Result<PartialHttpRequest, Error>
126+
where
127+
F: Fn(&str) -> FirstLineParts,
128+
{
120129
if input.trim().is_empty() {
121130
return Ok(PartialHttpRequest::new(
122131
input,
@@ -154,13 +163,7 @@ fn parse_request(input: &str) -> Result<PartialHttpRequest, Error> {
154163
}
155164

156165
/// Parse the first line of an HTTP request message
157-
fn parse_first_line(
158-
first_line: &str,
159-
) -> (
160-
Option<Range<usize>>,
161-
Option<Range<usize>>,
162-
Option<Range<usize>>,
163-
) {
166+
fn parse_first_line(first_line: &str) -> FirstLineParts {
164167
let mut parts = vec![];
165168
let mut last_end = 0;
166169

0 commit comments

Comments
 (0)