ft_sdk/from_request/
mod.rs

1mod app_url;
2mod config;
3#[cfg(feature = "field-extractors")]
4mod cookie;
5#[cfg(feature = "field-extractors")]
6mod default;
7mod form;
8pub mod handler;
9mod headers;
10#[cfg(feature = "field-extractors")]
11mod hidden;
12mod host;
13mod json;
14#[cfg(feature = "field-extractors")]
15mod optional;
16mod package;
17mod path;
18#[cfg(feature = "field-extractors")]
19mod query;
20#[cfg(feature = "field-extractors")]
21mod required;
22mod scheme;
23pub mod wrapped_processor;
24
25#[cfg(feature = "field-extractors")]
26pub use {
27    app_url::AppUrl, cookie::Cookie, default::Default, hidden::Hidden, optional::Optional,
28    query::Query, required::Required,
29};
30pub use {
31    config::Config,
32    form::Form,
33    host::Host,
34    json::Json,
35    package::{MainPackage, WasmPackage},
36    path::Path,
37    scheme::Scheme,
38};
39
40pub trait FromRequest: Sized {
41    fn from_request(req: &http::Request<serde_json::Value>) -> Result<Self, ft_sdk::Error>;
42}
43
44impl FromRequest for chrono::DateTime<chrono::Utc> {
45    fn from_request(_req: &http::Request<serde_json::Value>) -> Result<Self, ft_sdk::Error> {
46        Ok(ft_sdk::env::now())
47    }
48}
49
50impl FromRequest for ft_sdk::Connection {
51    fn from_request(_req: &http::Request<serde_json::Value>) -> Result<Self, ft_sdk::Error> {
52        Ok(ft_sdk::default_connection()?)
53    }
54}
55
56// TODO: need better name
57pub trait WrappedFromRequest: FromRequest {
58    fn wrap(self, output: serde_json::Value) -> Result<serde_json::Value, ft_sdk::Error>;
59}