Skip to content

Commit 89fda02

Browse files
committed
Refactor
1 parent 6a4643f commit 89fda02

File tree

1 file changed

+37
-24
lines changed

1 file changed

+37
-24
lines changed

src/models/partial_request.rs

Lines changed: 37 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -129,31 +129,9 @@ fn parse_request(input: &str) -> Result<PartialHttpRequest, Error> {
129129
.map(parse_first_line)
130130
.unwrap_or((None, None, None));
131131

132-
let (header_spans, body_spans) = match first_empty_line_idx {
133-
Some(idx) => {
134-
let header_spans = line_spans.clone()[1..idx].to_vec();
135-
let body_spans = Some(line_spans.clone()[idx..].to_vec());
136-
137-
(header_spans, body_spans)
138-
}
139-
None => {
140-
let header_spans = line_spans.clone()[1..].to_vec();
141-
let body_spans = None;
142-
143-
(header_spans, body_spans)
144-
}
145-
};
132+
let (header_spans, body_spans) = get_header_and_body_spans(line_spans, first_empty_line_idx);
146133

147-
let body_span = body_spans.and_then(|spans| {
148-
if spans.is_empty() {
149-
return None;
150-
}
151-
152-
let first = spans.first().unwrap();
153-
let last = spans.last().unwrap();
154-
155-
Some(first.start + 1..last.end)
156-
});
134+
let body_span = get_span_extent_from_spans(body_spans);
157135

158136
Ok(PartialHttpRequest::new(
159137
input,
@@ -189,3 +167,38 @@ fn parse_first_line(
189167

190168
(method_span, uri_span, http_version_span)
191169
}
170+
171+
fn get_header_and_body_spans(
172+
line_spans: Vec<Range<usize>>,
173+
first_empty_line_idx: Option<usize>,
174+
) -> (Vec<Range<usize>>, Option<Vec<Range<usize>>>) {
175+
let (header_spans, body_spans) = match first_empty_line_idx {
176+
Some(idx) => {
177+
let header_spans = line_spans.clone()[1..idx].to_vec();
178+
let body_spans = Some(line_spans.clone()[idx..].to_vec());
179+
180+
(header_spans, body_spans)
181+
}
182+
None => {
183+
let header_spans = line_spans.clone()[1..].to_vec();
184+
let body_spans = None;
185+
186+
(header_spans, body_spans)
187+
}
188+
};
189+
(header_spans, body_spans)
190+
}
191+
192+
fn get_span_extent_from_spans(body_spans: Option<Vec<Range<usize>>>) -> Option<Range<usize>> {
193+
let body_span = body_spans.and_then(|spans| {
194+
if spans.is_empty() {
195+
return None;
196+
}
197+
198+
let first = spans.first().unwrap();
199+
let last = spans.last().unwrap();
200+
201+
Some(first.start + 1..last.end)
202+
});
203+
body_span
204+
}

0 commit comments

Comments
 (0)