Trait rspotify_http::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§
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>
Object Safety§
This trait is not object safe.