ft_sdk/from_request/
mod.rs

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