use crate::Executor;
use serde::de::DeserializeOwned;
use serde::Deserialize;
use std::collections::HashMap;
use std::sync::Arc;
pub(crate) use crunchyroll_rs_internal::Request;
#[derive(Clone, Debug, Deserialize, smart_default::SmartDefault)]
#[serde(bound = "T: Request + DeserializeOwned")]
#[cfg_attr(feature = "__test_strict", serde(deny_unknown_fields))]
#[cfg_attr(not(feature = "__test_strict"), serde(default))]
pub struct BulkResult<T: Default + DeserializeOwned + Request> {
pub items: Vec<T>,
pub total: u32,
}
impl<T: Default + DeserializeOwned + Request> Request for BulkResult<T> {
fn __set_executor(&mut self, executor: Arc<Executor>) {
for item in self.items.iter_mut() {
item.__set_executor(executor.clone())
}
}
}
#[derive(Clone, Debug, Deserialize, smart_default::SmartDefault)]
#[serde(bound = "T: Request + DeserializeOwned")]
#[cfg_attr(feature = "__test_strict", serde(deny_unknown_fields))]
#[cfg_attr(not(feature = "__test_strict"), serde(default))]
pub struct CrappyBulkResult<T: Default + DeserializeOwned + Request> {
pub items: Vec<T>,
}
impl<T: Default + DeserializeOwned + Request> Request for CrappyBulkResult<T> {
fn __set_executor(&mut self, executor: Arc<Executor>) {
for item in self.items.iter_mut() {
item.__set_executor(executor.clone())
}
}
}
#[derive(Clone, Debug, Default, Deserialize)]
#[cfg_attr(feature = "__test_strict", serde(deny_unknown_fields))]
#[cfg_attr(not(feature = "__test_strict"), serde(default))]
pub struct Image {
pub source: String,
#[serde(rename(deserialize = "type"))]
pub image_type: String,
pub height: u32,
pub width: u32,
}
#[doc(hidden)]
pub trait Request {
fn __set_executor(&mut self, _: Arc<Executor>) {}
}
impl Request for () {}
impl<K, V> Request for HashMap<K, V> {}
impl Request for serde_json::Value {}