Enum HttpServerAction

Source
pub enum HttpServerAction {
    Bind {
        path: String,
        authenticated: bool,
        local_only: bool,
        cache: bool,
    },
    SecureBind {
        path: String,
        cache: bool,
    },
    Unbind {
        path: String,
    },
    WebSocketBind {
        path: String,
        authenticated: bool,
        extension: bool,
    },
    WebSocketSecureBind {
        path: String,
        extension: bool,
    },
    WebSocketUnbind {
        path: String,
    },
    WebSocketPush {
        channel_id: u32,
        message_type: WsMessageType,
    },
    WebSocketExtPushOutgoing {
        channel_id: u32,
        message_type: WsMessageType,
        desired_reply_type: MessageType,
    },
    WebSocketExtPushData {
        id: u64,
        hyperware_message_type: MessageType,
        blob: Vec<u8>,
    },
    WebSocketClose(u32),
}
Expand description

crate::Request type sent to http-server:distro:sys in order to configure it.

If a crate::Response is expected, all actions will return a crate::Response with the shape Result<(), HttpServerActionError> serialized to JSON.

Variants§

§

Bind

Bind expects a crate::LazyLoadBlob if and only if cache is TRUE. The crate::LazyLoadBlob should be the static file to serve at this path.

Fields

§path: String
§authenticated: bool

Set whether the HTTP request needs a valid login cookie, AKA, whether the user needs to be logged in to access this path.

§local_only: bool

Set whether crate::Requests can be fielded from anywhere, or only the loopback address.

§cache: bool

Set whether to bind the crate::LazyLoadBlob statically to this path. That is, take the crate::LazyLoadBlob bytes and serve them as the response to any request to this path.

§

SecureBind

SecureBind expects a crate::LazyLoadBlob if and only if cache is TRUE. The crate::LazyLoadBlob should be the static file to serve at this path.

SecureBind is the same as Bind, except that it forces requests to be made from the unique subdomain of the process that bound the path. These requests are always authenticated, and never local_only. The purpose of SecureBind is to serve elements of an app frontend or API in an exclusive manner, such that other apps installed on this node cannot access them. Since the subdomain is unique, it will require the user to be logged in separately to the general domain authentication.

Fields

§path: String
§cache: bool

Set whether to bind the crate::LazyLoadBlob statically to this path. That is, take the crate::LazyLoadBlob bytes and serve them as the response to any request to this path.

§

Unbind

Unbind a previously-bound HTTP path

Fields

§path: String
§

WebSocketBind

Bind a path to receive incoming WebSocket connections. Doesn’t need a cache since does not serve assets.

Fields

§path: String
§authenticated: bool
§extension: bool
§

WebSocketSecureBind

SecureBind is the same as Bind, except that it forces new connections to be made from the unique subdomain of the process that bound the path. These are always authenticated. Since the subdomain is unique, it will require the user to be logged in separately to the general domain authentication.

Fields

§path: String
§extension: bool
§

WebSocketUnbind

Unbind a previously-bound WebSocket path

Fields

§path: String
§

WebSocketPush

When sent, expects a crate::LazyLoadBlob containing the WebSocket message bytes to send.

Fields

§channel_id: u32
§message_type: WsMessageType
§

WebSocketExtPushOutgoing

When sent, expects a crate::LazyLoadBlob containing the WebSocket message bytes to send. Modifies the crate::LazyLoadBlob by placing into HttpServerAction::WebSocketExtPushData with id taken from this [KernelMessage] and hyperware_message_type set to desired_reply_type.

Fields

§channel_id: u32
§message_type: WsMessageType
§desired_reply_type: MessageType
§

WebSocketExtPushData

For communicating with the ext. Hyperware’s http-server sends this to the ext after receiving HttpServerAction::WebSocketExtPushOutgoing. Upon receiving reply with this type from ext, http-server parses, setting:

Fields

§id: u64
§hyperware_message_type: MessageType
§blob: Vec<u8>
§

WebSocketClose(u32)

Sending will close a socket the process controls.

Trait Implementations§

Source§

impl Clone for HttpServerAction

Source§

fn clone(&self) -> HttpServerAction

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for HttpServerAction

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for HttpServerAction

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for HttpServerAction

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> RpcObject for T
where T: RpcParam + RpcReturn,

Source§

impl<T> RpcParam for T
where T: Serialize + Clone + Debug + Send + Sync + Unpin,

Source§

impl<T> RpcReturn for T
where T: DeserializeOwned + Debug + Send + Sync + Unpin + 'static,