reep_optionparser_urlencoded/
lib.rs1#![deny(missing_docs)]
2
3extern crate iron;
9extern crate reep;
10extern crate urlencoded;
11
12use iron::prelude::*;
13use iron::typemap::Key;
14use iron::status;
15use reep::types::{ParserMiddleware, OptionParser};
16use urlencoded::{QueryMap, UrlEncodedQuery, UrlDecodingError};
17
18pub struct DefaultOptionParser;
21
22impl Key for DefaultOptionParser {
23 type Value = QueryMap;
24}
25
26impl ParserMiddleware for DefaultOptionParser {
27 fn parse(&self, req: &mut Request) -> IronResult<Self::Value> {
28 match req.compute::<UrlEncodedQuery>() {
29 Ok(data) => Ok(data),
30 Err(UrlDecodingError::EmptyQuery) => Ok(QueryMap::new()),
31 Err(decoding_error) => {
32 Err(IronError::new(decoding_error, (status::BadRequest)))
33 }
34 }
35 }
36}
37
38impl OptionParser for DefaultOptionParser {}