pmvhaven
This commit is contained in:
@@ -1,12 +1,32 @@
|
||||
use crate::{providers::{hanime::HanimeProvider, perverzija::PerverzijaProvider, pornhub::PornhubProvider, spankbang::SpankbangProvider}, util::cache::VideoCache, videos::VideoItem, DbPool};
|
||||
use crate::{
|
||||
DbPool,
|
||||
providers::{
|
||||
hanime::HanimeProvider, perverzija::PerverzijaProvider, pmvhaven::PmvhavenProvider,
|
||||
pornhub::PornhubProvider, spankbang::SpankbangProvider,
|
||||
},
|
||||
util::cache::VideoCache,
|
||||
videos::VideoItem,
|
||||
};
|
||||
|
||||
pub mod perverzija;
|
||||
pub mod hanime;
|
||||
pub mod spankbang;
|
||||
pub mod perverzija;
|
||||
pub mod pmvhaven;
|
||||
pub mod pornhub;
|
||||
pub mod spankbang;
|
||||
|
||||
pub trait Provider{
|
||||
async fn get_videos(&self, cache: VideoCache, pool: DbPool, channel: String, sort: String, query: Option<String>, page: String, per_page: String, featured: String) -> Vec<VideoItem>;
|
||||
pub trait Provider {
|
||||
async fn get_videos(
|
||||
&self,
|
||||
cache: VideoCache,
|
||||
pool: DbPool,
|
||||
channel: String,
|
||||
sort: String,
|
||||
query: Option<String>,
|
||||
page: String,
|
||||
per_page: String,
|
||||
featured: String,
|
||||
category: String,
|
||||
) -> Vec<VideoItem>;
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
@@ -15,18 +35,60 @@ pub enum AnyProvider {
|
||||
Hanime(HanimeProvider),
|
||||
Spankbang(SpankbangProvider),
|
||||
Pornhub(PornhubProvider),
|
||||
Pmvhaven(PmvhavenProvider),
|
||||
}
|
||||
impl Provider for AnyProvider {
|
||||
async fn get_videos(&self, cache: VideoCache, pool:DbPool, channel: String, sort: String, query: Option<String>, page: String, per_page: String, featured: String) -> Vec<VideoItem> {
|
||||
async fn get_videos(
|
||||
&self,
|
||||
cache: VideoCache,
|
||||
pool: DbPool,
|
||||
channel: String,
|
||||
sort: String,
|
||||
query: Option<String>,
|
||||
page: String,
|
||||
per_page: String,
|
||||
featured: String,
|
||||
category: String,
|
||||
) -> Vec<VideoItem> {
|
||||
println!(
|
||||
"/api/videos: channel={:?}, sort={:?}, query={:?}, page={:?}, per_page={:?}, featured={:?}",
|
||||
channel, sort, query, page, per_page, featured
|
||||
);
|
||||
match self {
|
||||
AnyProvider::Perverzija(p) => p.get_videos(cache.clone(), pool.clone(), channel.clone(), sort.clone(), query.clone(), page.clone(), per_page.clone(), featured.clone()).await,
|
||||
AnyProvider::Hanime(p) => p.get_videos(cache, pool, channel, sort, query, page, per_page, featured).await,
|
||||
AnyProvider::Spankbang(p) => p.get_videos(cache, pool, channel, sort, query, page, per_page, featured).await,
|
||||
AnyProvider::Pornhub(p) => p.get_videos(cache, pool, channel, sort, query, page, per_page, featured).await,
|
||||
AnyProvider::Perverzija(p) => {
|
||||
p.get_videos(
|
||||
cache.clone(),
|
||||
pool.clone(),
|
||||
channel.clone(),
|
||||
sort.clone(),
|
||||
query.clone(),
|
||||
page.clone(),
|
||||
per_page.clone(),
|
||||
featured.clone(),
|
||||
category.clone(),
|
||||
)
|
||||
.await
|
||||
}
|
||||
AnyProvider::Hanime(p) => {
|
||||
p.get_videos(cache, pool, channel, sort, query, page, per_page, featured,
|
||||
category.clone(),)
|
||||
.await
|
||||
}
|
||||
AnyProvider::Spankbang(p) => {
|
||||
p.get_videos(cache, pool, channel, sort, query, page, per_page, featured,
|
||||
category.clone(),)
|
||||
.await
|
||||
}
|
||||
AnyProvider::Pornhub(p) => {
|
||||
p.get_videos(cache, pool, channel, sort, query, page, per_page, featured,
|
||||
category.clone(),)
|
||||
.await
|
||||
}
|
||||
AnyProvider::Pmvhaven(p) => {
|
||||
p.get_videos(cache, pool, channel, sort, query, page, per_page, featured,
|
||||
category.clone(),)
|
||||
.await
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user