Trait BaseHttpClient

Source
pub trait BaseHttpClient:
    Send
    + Default
    + Clone
    + Debug {
    type Error;

    // Required methods
    fn get(
        &self,
        url: &str,
        headers: Option<&Headers>,
        payload: &Query<'_>,
    ) -> Result<String, Self::Error>;
    fn post(
        &self,
        url: &str,
        headers: Option<&Headers>,
        payload: &Value,
    ) -> Result<String, Self::Error>;
    fn post_form(
        &self,
        url: &str,
        headers: Option<&Headers>,
        payload: &Form<'_>,
    ) -> Result<String, Self::Error>;
    fn put(
        &self,
        url: &str,
        headers: Option<&Headers>,
        payload: &Value,
    ) -> Result<String, Self::Error>;
    fn delete(
        &self,
        url: &str,
        headers: Option<&Headers>,
        payload: &Value,
    ) -> Result<String, Self::Error>;
}
Expand description

This trait represents the interface to be implemented for an HTTP client, which is kept separate from the Spotify client for cleaner code. Thus, it also requires other basic traits that are needed for the Spotify client.

When a request doesn’t need to pass parameters, the empty or default value of the payload type should be passed, like json!({}) or Query::new(). This avoids using Option<T> because Value itself may be null in other different ways (Value::Null, an empty Value::Object…), so this removes redundancy and edge cases (a `Some(Value::Null), for example, doesn’t make much sense).

Required Associated Types§

Required Methods§

Source

fn get( &self, url: &str, headers: Option<&Headers>, payload: &Query<'_>, ) -> Result<String, Self::Error>

Source

fn post( &self, url: &str, headers: Option<&Headers>, payload: &Value, ) -> Result<String, Self::Error>

Source

fn post_form( &self, url: &str, headers: Option<&Headers>, payload: &Form<'_>, ) -> Result<String, Self::Error>

Source

fn put( &self, url: &str, headers: Option<&Headers>, payload: &Value, ) -> Result<String, Self::Error>

Source

fn delete( &self, url: &str, headers: Option<&Headers>, payload: &Value, ) -> Result<String, Self::Error>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§