bodhi 2.0.1

bodhi REST API client
Documentation
use crate::error::QueryError;

use serde::de::DeserializeOwned;

#[allow(clippy::upper_case_acronyms)]
#[derive(Debug, PartialEq)]
pub enum RequestMethod {
    GET,
    POST,
}

pub trait SingleRequest<P, T>
where
    T: DeserializeOwned,
{
    fn method(&self) -> RequestMethod;
    fn path(&self) -> Result<String, QueryError>;

    #[allow(unused_variables)]
    fn body(&self, csrf_token: Option<String>) -> Result<Option<String>, QueryError> {
        Ok(None)
    }

    fn parse(&self, string: &str) -> Result<P, QueryError>;
    fn extract(&self, page: P) -> T;
}

pub trait PaginatedRequest<P, T>
where
    P: Pagination,
    T: DeserializeOwned,
{
    fn page_request<'a>(&'a self, page: u32) -> Box<dyn SingleRequest<P, T> + 'a>;
    fn callback(&self, page: u32, pages: u32);
}

pub trait Pagination {
    fn pages(&self) -> u32;
}