use crate::entity::{SerpApiGoogleSearchByImageTaskAdvanced, SerpApiGoogleSearchByImageTaskHtml};
use crate::{DataForSeoApiResponse, SerpApiGoogle, SerpApiTaskReadyResult};
use serde::{Deserialize, Serialize};
use serde_json::Value;
impl SerpApiGoogle<'_> {
pub async fn search_by_image_task_post(
&self,
data: Vec<SerpApiGoogleSearchByImageTaskPostRequest>,
) -> DataForSeoApiResponse<Value> {
self.client
.http_post("/v3/serp/google/search_by_image/task_post", &data)
.await
}
pub async fn search_by_image_tasks_ready(
&self,
) -> DataForSeoApiResponse<SerpApiTaskReadyResult> {
self.client
.serp()
.task_ready_se("google/search_by_image")
.await
}
pub async fn search_by_image_task_get_advanced(
&self,
id: &str,
) -> DataForSeoApiResponse<SerpApiGoogleSearchByImageTaskAdvanced> {
self.client
.http_get(format!("/v3/serp/google/search_by_image/task_get/advanced/{id}").as_str())
.await
}
pub async fn search_by_image_task_get_html(
&self,
id: &str,
) -> DataForSeoApiResponse<SerpApiGoogleSearchByImageTaskHtml> {
self.client
.http_get(format!("/v3/serp/google/search_by_image/task_get/html/{id}").as_str())
.await
}
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct SerpApiGoogleSearchByImageTaskPostRequest {
pub image_url: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub priority: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub location_name: Option<String>,
pub location_code: i32,
#[serde(skip_serializing_if = "Option::is_none")]
pub location_coordinate: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language_name: Option<String>,
pub language_code: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub se_domain: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_crawl_pages: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub calculate_rectangles: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub browser_screen_width: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub browser_screen_height: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tag: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub postback_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub postback_data: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pingback_url: Option<String>,
}
impl SerpApiGoogleSearchByImageTaskPostRequest {
pub fn new<T: Into<String>>(image_url: T, language_code: String, location_code: i32) -> Self {
SerpApiGoogleSearchByImageTaskPostRequest {
image_url: image_url.into(),
language_code,
location_code,
..SerpApiGoogleSearchByImageTaskPostRequest::default()
}
}
}