Split requests into their own module
This commit is contained in:
		
							parent
							
								
									4769baf875
								
							
						
					
					
						commit
						bb80105b4a
					
				| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
use crate::structs;
 | 
			
		||||
 | 
			
		||||
extern crate serde_json;
 | 
			
		||||
 | 
			
		||||
pub async fn get_sauce_info(client: reqwest::Client, sauce: i32) -> Result<structs::GalleryInfo, reqwest::Error> {
 | 
			
		||||
    let mut uri = String::from("https://nhentai.net/api/gallery/");
 | 
			
		||||
    uri.push_str(&sauce.to_string());
 | 
			
		||||
    let resp = client.get(&uri)
 | 
			
		||||
        .send()
 | 
			
		||||
        .await?;
 | 
			
		||||
    Ok(serde_json::from_str(&resp.text().await?).unwrap())
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub async fn get_search_info(client: reqwest::Client, search_query: &str) -> Result<structs::SearchInfo, reqwest::Error> {
 | 
			
		||||
    let uri = "https://nhentai.net/api/galleries/search";
 | 
			
		||||
    let resp = client.get(uri)
 | 
			
		||||
        .query(&[("query", search_query)])
 | 
			
		||||
        .send()
 | 
			
		||||
        .await?;
 | 
			
		||||
    Ok(serde_json::from_str(&resp.text().await?).unwrap())
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
use crate::api;
 | 
			
		||||
use crate::utils;
 | 
			
		||||
use crate::structs;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -29,7 +30,7 @@ pub async fn run(args: env::Args) {
 | 
			
		|||
        for sauce in sauces {
 | 
			
		||||
            let cloned_client = client.clone();
 | 
			
		||||
            handles.push(tokio::spawn(async move {
 | 
			
		||||
                match utils::get_sauce_info(cloned_client, sauce).await.unwrap() {
 | 
			
		||||
                match api::get_sauce_info(cloned_client, sauce).await.unwrap() {
 | 
			
		||||
                    structs::GalleryInfo::Info(sauce_info) => sauce_info,
 | 
			
		||||
                    structs::GalleryInfo::Error(sauce_error) => panic!("{} returned: {}", sauce, sauce_error.error)
 | 
			
		||||
                }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
use crate::utils;
 | 
			
		||||
use crate::api;
 | 
			
		||||
 | 
			
		||||
use std::env;
 | 
			
		||||
use std::process::exit;
 | 
			
		||||
| 
						 | 
				
			
			@ -14,7 +14,7 @@ pub async fn run(args: env::Args) {
 | 
			
		|||
        eprintln!("Missing search query");
 | 
			
		||||
        exit(1);
 | 
			
		||||
    }
 | 
			
		||||
    let search_info = utils::get_search_info(reqwest::Client::new(), &query).await.unwrap();
 | 
			
		||||
    let search_info = api::get_search_info(reqwest::Client::new(), &query).await.unwrap();
 | 
			
		||||
    if search_info.num_pages < 1 {
 | 
			
		||||
        eprintln!("No results found");
 | 
			
		||||
        exit(1);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
use crate::api;
 | 
			
		||||
use crate::utils;
 | 
			
		||||
use crate::structs;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -18,7 +19,7 @@ pub async fn run(args: env::Args) {
 | 
			
		|||
    for sauce in sauces {
 | 
			
		||||
        let cloned_client = client.clone();
 | 
			
		||||
        handles.push(tokio::spawn(async move {
 | 
			
		||||
            (utils::get_sauce_info(cloned_client, sauce).await.unwrap(), sauce)
 | 
			
		||||
            (api::get_sauce_info(cloned_client, sauce).await.unwrap(), sauce)
 | 
			
		||||
        }));
 | 
			
		||||
    }
 | 
			
		||||
    let mut fail = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
mod api;
 | 
			
		||||
mod utils;
 | 
			
		||||
mod structs;
 | 
			
		||||
mod commands;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										21
									
								
								src/utils.rs
								
								
								
								
							
							
						
						
									
										21
									
								
								src/utils.rs
								
								
								
								
							| 
						 | 
				
			
			@ -1,29 +1,8 @@
 | 
			
		|||
use crate::structs;
 | 
			
		||||
 | 
			
		||||
use std::env;
 | 
			
		||||
use std::fs::File;
 | 
			
		||||
use std::io::Write;
 | 
			
		||||
extern crate serde_json;
 | 
			
		||||
extern crate reqwest;
 | 
			
		||||
 | 
			
		||||
pub async fn get_sauce_info(client: reqwest::Client, sauce: i32) -> Result<structs::GalleryInfo, reqwest::Error> {
 | 
			
		||||
    let mut uri = String::from("https://nhentai.net/api/gallery/");
 | 
			
		||||
    uri.push_str(&sauce.to_string());
 | 
			
		||||
    let resp = client.get(&uri)
 | 
			
		||||
        .send()
 | 
			
		||||
        .await?;
 | 
			
		||||
    Ok(serde_json::from_str(&resp.text().await?).unwrap())
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub async fn get_search_info(client: reqwest::Client, search_query: &str) -> Result<structs::SearchInfo, reqwest::Error> {
 | 
			
		||||
    let uri = "https://nhentai.net/api/galleries/search";
 | 
			
		||||
    let resp = client.get(uri)
 | 
			
		||||
        .query(&[("query", search_query)])
 | 
			
		||||
        .send()
 | 
			
		||||
        .await?;
 | 
			
		||||
    Ok(serde_json::from_str(&resp.text().await?).unwrap())
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub async fn download_file(client: reqwest::Client, url: &str, file_name: &str) -> Result<bool, reqwest::Error> {
 | 
			
		||||
    let resp = client.get(url)
 | 
			
		||||
        .send()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue