1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
//! Library to handle the parsing of requests in TOML format used by the crate `rede`.
//!
//! The library offers the function [`rede_parser::parse_request`](parse_request)
//! to convert a given string into a valid rede [`rede_schema::Request`](Request).
//!
//! # Example
//!
//! Pass the correct request TOML to the parser functions to get the parsed request:
//!
//! ```
//! # use http::Method;
//! # use rede_schema::body::Body;
//! # use std::error::Error;
//!
//! # fn main() -> Result<(), Box<dyn Error>> {
//! let toml = r#"
//! [http]
//! method = "POST"
//! url = "http://localhost:8080/note"
//!
//! [headers]
//! Content-Type = "application/json"
//!
//! [body]
//! raw = """
//! {
//! "title": "Implement rede_parser" ,
//! "description": "Implement it following the example
//! }
//! """
//! "#;
//! let request = rede_parser::parse_request(toml)?;
//! assert_eq!(request.method, Method::POST);
//! assert_eq!(request.url, "http://localhost:8080/note");
//! assert_eq!(request.headers["Content-Type"], "application/json");
//! if let Body::Raw { content, mime } = &request.body {
//! assert_eq!(mime, &"text/plain; charset=utf-8");
//! println!("{}", &request.body);
//! }
//! # Ok(())
//! # }
//! ```
use crateSchema;
use FromStr;
pub use Error;
/// Attempts to parse the given string into an HTTP request.
///
/// # Example
///
/// Passing the contents of a valid request TOML will provide a [Request]
///
/// ```
/// # use std::error::Error;
/// # fn main() -> Result<(), Box<dyn Error>> {
/// let toml = r#"
/// http = { url = "http://localhost:8080", method = "GET" }
/// "#;
/// let request = rede_parser::parse_request(toml)?;
/// assert_eq!(request.url, "http://localhost:8080");
/// assert_eq!(request.method, "GET");
/// # Ok(())
/// # }
///```
/// # Errors
///
/// Some possible errors are:
/// - The contents are not a valid TOML file
/// - A required key is missing
/// - At least one is the wrong type
///
/// ```
/// # use std::error::Error;
/// # fn main() {
/// let toml = r#"
/// http = { url = "http://localhost:8080", method = "GET" }
/// query_params = { since = 1970-01-01 }
/// "#;
/// let result = rede_parser::parse_request(toml);
/// assert!(result.is_err());
/// # }
/// ```