server_fn/response/
mod.rs1#[cfg(feature = "actix-no-default")]
3pub mod actix;
4#[cfg(feature = "browser")]
6pub mod browser;
7#[cfg(feature = "generic")]
8pub mod generic;
9#[cfg(feature = "axum-no-default")]
11pub mod http;
12#[cfg(feature = "reqwest")]
14pub mod reqwest;
15
16use crate::error::ServerFnErrorResponseParts;
17use bytes::Bytes;
18use futures::Stream;
19use std::future::Future;
20
21pub trait TryRes<E>
23where
24 Self: Sized,
25{
26 fn try_from_string(content_type: &str, data: String) -> Result<Self, E>;
28
29 fn try_from_bytes(content_type: &str, data: Bytes) -> Result<Self, E>;
31
32 fn try_from_stream(
34 content_type: &str,
35 data: impl Stream<Item = Result<Bytes, Bytes>> + Send + 'static,
36 ) -> Result<Self, E>;
37}
38
39pub trait Res {
41 fn error_response(path: &str, err: ServerFnErrorResponseParts) -> Self;
43 fn redirect(&mut self, path: &str);
45}
46
47pub trait ClientRes<E> {
49 fn try_into_string(self) -> impl Future<Output = Result<String, E>> + Send;
51
52 fn try_into_bytes(self) -> impl Future<Output = Result<Bytes, E>> + Send;
54
55 fn try_into_stream(
57 self,
58 ) -> Result<
59 impl Stream<Item = Result<Bytes, Bytes>> + Send + Sync + 'static,
60 E,
61 >;
62
63 fn status(&self) -> u16;
65
66 fn status_text(&self) -> String;
68
69 fn location(&self) -> String;
71
72 fn has_redirect(&self) -> bool;
74}
75
76pub struct BrowserMockRes;
83
84impl<E> TryRes<E> for BrowserMockRes {
85 fn try_from_string(_content_type: &str, _data: String) -> Result<Self, E> {
86 unreachable!()
87 }
88
89 fn try_from_bytes(_content_type: &str, _data: Bytes) -> Result<Self, E> {
90 unreachable!()
91 }
92
93 fn try_from_stream(
94 _content_type: &str,
95 _data: impl Stream<Item = Result<Bytes, Bytes>>,
96 ) -> Result<Self, E> {
97 unreachable!()
98 }
99}
100
101impl Res for BrowserMockRes {
102 fn error_response(_path: &str, _err: ServerFnErrorResponseParts) -> Self {
103 unreachable!()
104 }
105
106 fn redirect(&mut self, _path: &str) {
107 unreachable!()
108 }
109}