Client

Struct Client 

Source
pub struct Client { /* private fields */ }
Expand description

A client to make requests with.

Implementations§

Source§

impl Client

Source

pub fn new() -> Self

Creates a new Client.

Source

pub fn set_token(&mut self, token: impl ToString)

Sets the provided token to be used with http requests.

Source

pub fn get_token(&self) -> Option<String>

Returns the token of the client, if it has one.

Source

pub async fn generate_token(&self) -> Result<String>

Generates a new OTDB token, this allows the client to not receive twice the same question.

Source

pub fn trivia(&self) -> Request<'_, BaseResponse<Vec<Trivia>>>

Creates a new http request used to retrieve trivia questions, all options can be set before sending the request.

§Example
use otdb::Client;

#[tokio::main]
async fn main() {
    let client = Client::new();
    let mut request = client.trivia();

    // We can set various request options here.
    request.question_number(10);

    match request.send().await {
        Ok(response) => {
            // Do something with the response
        },
        Err(error) => {
            // Do something with the error
        }
    }
}
Source

pub fn category_details( &self, category: Category, ) -> Request<'_, CategoryDetails>

Creates a new http request used to retrieve trivia questions, all options can be set before sending the request.

§Example
use otdb::{Category, Client};

#[tokio::main]
async fn main() {
    let client = Client::new();
    match client.category_details(Category::Animals).send().await {
        Ok(response) => {
            // Do something with the response
        }
        Err(error) => {
            // Do something with the error
        }
    }
}
Source

pub fn global_details(&self) -> Request<'_, GlobalDetails>

Creates a new http request that fetches the global OTDB API details.

§Example
use otdb::Client;

#[tokio::main]
async fn main() {
    let client = Client::new();
    match client.global_details().send().await {
        Ok(response) => {
            // Do something with the response
        },
        Err(error) => {
            // Do something with the error
        }
    }
}
Source

pub fn new_request<T: DeserializeOwned>( &self, endpoint: impl ToString, ) -> Request<'_, T>

Creates a new http request with a custom endpoint and a custom return body.

§Example
use otdb::Client;

#[derive(serde::Deserialize)]
struct SuperCoolResponse {
    // ...
}

#[tokio::main]
async fn main() {
    let client = Client::new();
    match client.new_request::<SuperCoolResponse>("<ENDPOINT>").send().await {
        Ok(response) => {
            // Do something with the response
        },
        Err(error) => {
            // Do something with the error
        }
    }
}
Source

pub async fn reset_token(&mut self) -> Result<String>

Resets the token the client has, this clears the past memory of the token, and allows the client to receive all the available questions again. If the client doesn’t have a token, this method will create one and set it.

This method returns the token used by the client or the generated one in case the client didn’t have one. However, it is NOT required to set the token again, because this operation only resets the token if it was present, it doesn’t change. In case it wasn’t present it will also be set in the client.

§Example
use otdb::Client;

#[tokio::main]
async fn main() {
    let mut client = Client::new();
    client.set_token(client.generate_token().await.unwrap());
    client.reset_token().await.unwrap();
}

Trait Implementations§

Source§

impl Clone for Client

Source§

fn clone(&self) -> Client

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 Client

Source§

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

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

impl Default for Client

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl Freeze for Client

§

impl !RefUnwindSafe for Client

§

impl Send for Client

§

impl Sync for Client

§

impl Unpin for Client

§

impl !UnwindSafe for Client

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> 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<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> ErasedDestructor for T
where T: 'static,