background loading
This commit is contained in:
@@ -18,7 +18,7 @@ error_chain! {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(serde::Serialize, serde::Deserialize, Debug)]
|
||||
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone)]
|
||||
struct HanimeSearchRequest{
|
||||
search_text: String,
|
||||
tags: Vec<String>,
|
||||
@@ -114,6 +114,7 @@ struct HanimeSearchResult{
|
||||
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
#[allow(dead_code)]
|
||||
pub struct HanimeProvider {
|
||||
url: String,
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
use crate::{providers::{hanime::HanimeProvider, perverzija::PerverzijaProvider, spankbang::SpankbangProvider}, util::cache::VideoCache, videos::VideoItem, DbPool};
|
||||
use tokio::task;
|
||||
|
||||
pub mod perverzija;
|
||||
pub mod hanime;
|
||||
@@ -8,6 +9,7 @@ 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>;
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum AnyProvider {
|
||||
Perverzija(PerverzijaProvider),
|
||||
Hanime(HanimeProvider),
|
||||
@@ -16,7 +18,7 @@ pub enum AnyProvider {
|
||||
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> {
|
||||
match self {
|
||||
AnyProvider::Perverzija(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()).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,
|
||||
}
|
||||
|
||||
@@ -21,6 +21,8 @@ error_chain! {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct PerverzijaProvider {
|
||||
url: String,
|
||||
}
|
||||
@@ -31,12 +33,6 @@ impl PerverzijaProvider {
|
||||
}
|
||||
}
|
||||
async fn get(&self, cache:VideoCache, pool:DbPool, page: u8, featured: String) -> Result<Vec<VideoItem>> {
|
||||
//TODO
|
||||
// let mut url = Url::parse("https://example.net")?;
|
||||
// url.query_pairs_mut().append_pair("foo", "bar");
|
||||
// url.query_pairs_mut().append_pair("key", "dkhdsihdsaiufds");
|
||||
// url.query_pairs_mut().append_pair("hello", "world");
|
||||
// println!("{}", url.as_str());
|
||||
|
||||
let mut prefix_uri = "".to_string();
|
||||
if featured == "featured" {
|
||||
@@ -118,6 +114,9 @@ impl PerverzijaProvider {
|
||||
}
|
||||
}
|
||||
async fn query(&self, cache: VideoCache, pool:DbPool, page: u8, query: &str) -> Result<Vec<VideoItem>> {
|
||||
|
||||
|
||||
|
||||
let search_string = query.replace(" ", "+");
|
||||
let mut url = format!(
|
||||
"{}page/{}/?s={}",
|
||||
|
||||
@@ -17,6 +17,8 @@ error_chain! {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct SpankbangProvider {
|
||||
url: String,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user