Skip to main content

HttpCall

Trait HttpCall 

Source
pub trait HttpCall: Sized {
    type Payload: Serialize + DeserializeOwned;
    type Response: Serialize + DeserializeOwned;

    const ROUTE: Route;
    const PAYLOAD: PayloadKind;

    // Required methods
    fn payload(&self) -> &Self::Payload;
    fn from_parts(
        params: &PathParams,
        payload: Self::Payload,
    ) -> Result<Self, ApiError>;

    // Provided methods
    fn path_params(&self) -> PathParams { ... }
    fn path(&self) -> Option<String> { ... }
}
Expand description

A typed HTTP request: its route, payload and answer.

Methods added later always come with a default implementation.

Required Associated Constants§

Source

const ROUTE: Route

The route: method, path template ({param} placeholders) and whether a Bearer token is required. Always one entry of routes::ALL.

Source

const PAYLOAD: PayloadKind

How the payload travels.

Required Associated Types§

Source

type Payload: Serialize + DeserializeOwned

What is sent: the JSON body, the query parameters, or NoPayload.

Source

type Response: Serialize + DeserializeOwned

The answer’s JSON on success (2xx).

Required Methods§

Source

fn payload(&self) -> &Self::Payload

The payload to send.

Source

fn from_parts( params: &PathParams, payload: Self::Payload, ) -> Result<Self, ApiError>

The call from what a server received: the path parameters by name and the decoded payload. Checks the shape of the path parameters (400 bad_request for an id that is not a number or an invalid name); the payload’s own rules are its validate(), which the server runs.

Provided Methods§

Source

fn path_params(&self) -> PathParams

The values of the path’s placeholders (none for a route without parameters).

Source

fn path(&self) -> Option<String>

The concrete path (/v1/storage/saves/slot-1), or None if a parameter is missing or would need escaping (only path-safe values are ever sent).

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl HttpCall for AuditQuery

Source§

const ROUTE: Route

Source§

const PAYLOAD: PayloadKind = crate::http_call::PayloadKind::Query

Source§

type Payload = AuditQuery

Source§

type Response = Page<AuditEntry>

Source§

impl HttpCall for BanUser

Source§

impl HttpCall for BatchGet

Source§

const ROUTE: Route

Source§

const PAYLOAD: PayloadKind = crate::http_call::PayloadKind::Json

Source§

type Payload = BatchGet

Source§

type Response = BatchObjects

Source§

impl HttpCall for BatchPut

Source§

const ROUTE: Route

Source§

const PAYLOAD: PayloadKind = crate::http_call::PayloadKind::Json

Source§

type Payload = BatchPut

Source§

type Response = BatchAcks

Source§

impl HttpCall for ChangePasswordRequest

Source§

const ROUTE: Route

Source§

const PAYLOAD: PayloadKind = crate::http_call::PayloadKind::Json

Source§

type Payload = ChangePasswordRequest

Source§

type Response = Ack

Source§

impl HttpCall for DeleteMessage

Source§

impl HttpCall for ForgotPasswordRequest

Source§

const ROUTE: Route

Source§

const PAYLOAD: PayloadKind = crate::http_call::PayloadKind::Json

Source§

type Payload = ForgotPasswordRequest

Source§

type Response = Ack

Source§

impl HttpCall for GetAccount

Source§

impl HttpCall for GetObject

Source§

impl HttpCall for GetServerInfo

Source§

const ROUTE: Route

Source§

const PAYLOAD: PayloadKind = crate::http_call::PayloadKind::Empty

Source§

type Payload = NoPayload

Source§

type Response = ServerInfo

Source§

impl HttpCall for GetUser

Source§

impl HttpCall for GetUserObject

Source§

impl HttpCall for GrantRole

Source§

impl HttpCall for ListDirects

Source§

impl HttpCall for ListMessages

Source§

impl HttpCall for ListObjects

Source§

impl HttpCall for ListRooms

Source§

impl HttpCall for ListUserObjects

Source§

impl HttpCall for LoginRequest

Source§

const ROUTE: Route

Source§

const PAYLOAD: PayloadKind = crate::http_call::PayloadKind::Json

Source§

type Payload = LoginRequest

Source§

type Response = AuthSession

Source§

impl HttpCall for LogoutRequest

Source§

const ROUTE: Route

Source§

const PAYLOAD: PayloadKind = crate::http_call::PayloadKind::Json

Source§

type Payload = LogoutRequest

Source§

type Response = Ack

Source§

impl HttpCall for OpenDirect

Source§

const ROUTE: Route

Source§

const PAYLOAD: PayloadKind = crate::http_call::PayloadKind::Json

Source§

type Payload = OpenDirect

Source§

type Response = RoomInfo

Source§

impl HttpCall for RefreshRequest

Source§

const ROUTE: Route

Source§

const PAYLOAD: PayloadKind = crate::http_call::PayloadKind::Json

Source§

type Payload = RefreshRequest

Source§

type Response = TokenPair

Source§

impl HttpCall for RegisterRequest

Source§

const ROUTE: Route

Source§

const PAYLOAD: PayloadKind = crate::http_call::PayloadKind::Json

Source§

type Payload = RegisterRequest

Source§

type Response = AuthSession

Source§

impl HttpCall for RemoveObject

Source§

impl HttpCall for RemoveUserObject

Source§

impl HttpCall for ResendVerification

Source§

impl HttpCall for ResetPasswordRequest

Source§

const ROUTE: Route

Source§

const PAYLOAD: PayloadKind = crate::http_call::PayloadKind::Json

Source§

type Payload = ResetPasswordRequest

Source§

type Response = Ack

Source§

impl HttpCall for RevokeRole

Source§

impl HttpCall for RevokeSessions

Source§

impl HttpCall for SteamLoginRequest

Source§

const ROUTE: Route

Source§

const PAYLOAD: PayloadKind = crate::http_call::PayloadKind::Json

Source§

type Payload = SteamLoginRequest

Source§

type Response = AuthSession

Source§

impl HttpCall for UnbanUser

Source§

impl HttpCall for UnlinkIdentity

Source§

impl HttpCall for UnlinkUserIdentity

Source§

impl HttpCall for UpdateAccountRequest

Source§

const ROUTE: Route

Source§

const PAYLOAD: PayloadKind = crate::http_call::PayloadKind::Json

Source§

type Payload = UpdateAccountRequest

Source§

type Response = Account

Source§

impl HttpCall for UserListQuery

Source§

const ROUTE: Route

Source§

const PAYLOAD: PayloadKind = crate::http_call::PayloadKind::Query

Source§

type Payload = UserListQuery

Source§

type Response = Page<AdminUser>

Source§

impl HttpCall for VerifyEmailRequest

Source§

const ROUTE: Route

Source§

const PAYLOAD: PayloadKind = crate::http_call::PayloadKind::Json

Source§

type Payload = VerifyEmailRequest

Source§

type Response = Ack

Source§

impl HttpCall for WriteObject

Source§

impl HttpCall for WriteUserObject