media_type_impl_utils/quoted_string/
http.rs1use lut::{Table};
2use lookup_tables::{
3 MediaTypeChars,
4 QTextWs,
5 HttpToken
6};
7use qs::error::CoreError;
8use qs::spec::{
9 PartialCodePoint,
10 ParsingImpl,
11 State,
12 WithoutQuotingValidator,
13};
14
15#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash, Default)]
17pub struct HttpObsParsingImpl;
18
19impl ParsingImpl for HttpObsParsingImpl {
20
21 fn can_be_quoted(bch: PartialCodePoint) -> bool {
23 let idx = bch.as_u8() as usize;
24 idx > 0x7f || MediaTypeChars::check_at(idx, QTextWs)
25 }
26 fn handle_normal_state(bch: PartialCodePoint) -> Result<(State<Self>, bool), CoreError> {
29 let idx = bch.as_u8() as usize;
30 if idx > 0x7f || MediaTypeChars::check_at(idx, QTextWs) {
31 Ok((State::Normal, true))
32 } else {
33 Err(CoreError::InvalidChar)
34 }
35 }
36}
37
38#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash, Default)]
40pub struct HttpTokenValidator;
41
42impl HttpTokenValidator {
43 pub fn new() -> Self {
45 Default::default()
46 }
47}
48
49impl WithoutQuotingValidator for HttpTokenValidator {
50 fn next(&mut self, pcp: PartialCodePoint) -> bool {
51 MediaTypeChars::check_at(pcp.as_u8() as usize, HttpToken)
52 }
53
54 fn end(&self) -> bool {
55 true
56 }
57}