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, RequiredAppUrl},
28    cookie::Cookie,
29    default::Default,
30    hidden::Hidden,
31    optional::Optional,
32    query::Query,
33    required::Required,
34};
35pub use {
36    config::Config,
37    form::Form,
38    host::Host,
39    json::Json,
40    package::{MainPackage, WasmPackage},
41    path::Path,
42    scheme::Scheme,
43};
44
45pub trait FromRequest: Sized {
46    fn from_request(req: &http::Request<serde_json::Value>) -> Result<Self, ft_sdk::Error>;
47}
48
49impl FromRequest for chrono::DateTime<chrono::Utc> {
50    fn from_request(_req: &http::Request<serde_json::Value>) -> Result<Self, ft_sdk::Error> {
51        Ok(ft_sdk::env::now())
52    }
53}
54
55impl FromRequest for ft_sdk::Connection {
56    fn from_request(_req: &http::Request<serde_json::Value>) -> Result<Self, ft_sdk::Error> {
57        Ok(ft_sdk::default_connection()?)
58    }
59}
60
61// TODO: need better name
62pub trait WrappedFromRequest: FromRequest {
63    fn wrap(self, output: serde_json::Value) -> Result<serde_json::Value, ft_sdk::Error>;
64}