pub struct HttpTransport;Expand description
The transport the shared server answers: plain HTTP/1.1 through the crate’s one minimal client (ADR 0032: no HTTP client dependency, no TLS). A private network or an overlay provides confidentiality; the protocol provides authenticity.
It refuses an oversized message before opening a socket, so the bound the protocol states is enforced by the sender too and a peer is never asked to read something it would have to refuse. An endpoint may be written with or without a scheme, because a person writing a seed should not have to know which.
use majordomus_cli::mesh::link::{HttpTransport, LinkTransport, Signed, MAX_LINK_MESSAGE,
SYNC_PATH};
let oversized = Signed { body: serde_json::json!("x".repeat(MAX_LINK_MESSAGE)), sig: String::new() };
let error = HttpTransport.post("127.0.0.1:9", SYNC_PATH, &oversized).unwrap_err();
assert!(error.contains("exceeds"), "refused before the socket: {error}");Trait Implementations§
Source§impl LinkTransport for HttpTransport
impl LinkTransport for HttpTransport
Source§fn post(
&self,
endpoint: &str,
path: &str,
message: &Signed,
) -> Result<LinkReply, String>
fn post( &self, endpoint: &str, path: &str, message: &Signed, ) -> Result<LinkReply, String>
Post
message to path at endpoint (host:port) and return the peer’s reply.
Err is a transport failure — unreachable, timed out, not a reply — never a
refusal; a refusal is an Ok reply that says so. Read moreAuto Trait Implementations§
impl Freeze for HttpTransport
impl RefUnwindSafe for HttpTransport
impl Send for HttpTransport
impl Sync for HttpTransport
impl Unpin for HttpTransport
impl UnsafeUnpin for HttpTransport
impl UnwindSafe for HttpTransport
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more