use data_for_seo::entity::SerpApiGoogleOrganicItem;
use data_for_seo::{
DataForSeoClient, SerpApiGoogleJobsTaskPostRequest, SerpApiGoogleOrganicTaskPostRequest,
};
use std::env;
fn client() -> DataForSeoClient {
dotenv::dotenv().ok();
let id = env::var("ID").unwrap();
let pass = env::var("PASSWORD").unwrap();
DataForSeoClient::new(id, pass)
}
#[tokio::test]
async fn test_locations() {
let client = client();
let tasks = client.serp().google().locations().await.unwrap().tasks;
assert_ne!(tasks.len(), 0);
for task in tasks {
println!("{:}", task.id);
let results = task.result.unwrap();
assert_ne!(results.len(), 0);
for result in results {
if result.clone().location_name.unwrap().as_str() == "Japan" {
println!("{:?}", result);
return;
}
}
}
}
#[tokio::test]
async fn test_location_country() {
let client = client();
let tasks = client
.serp()
.google()
.locations_country("JP")
.await
.unwrap()
.tasks;
assert_ne!(tasks.len(), 0);
for task in tasks {
println!("{:}", task.id);
let results = task.result.unwrap();
assert_ne!(results.len(), 0);
println!("{:?}", results);
}
}
#[tokio::test]
async fn test_language() {
let client = client();
let tasks = client.serp().google().languages().await.unwrap().tasks;
assert_ne!(tasks.len(), 0);
for task in tasks {
println!("{:}", task.id);
let results = task.result.unwrap();
assert_ne!(results.len(), 0);
for result in results {
println!("{:?}", result);
}
}
}
#[tokio::test]
async fn test_fixed() {
let client = client();
let tasks = client
.serp()
.google()
.organic_tasks_fixed()
.await
.unwrap()
.tasks;
assert_ne!(tasks.len(), 0);
for task in tasks {
println!("{:?}", task);
}
}
#[tokio::test]
async fn test1() {
let client = client();
let mut request = SerpApiGoogleOrganicTaskPostRequest::new("ja".to_string(), 1009307);
request.keyword = "介護".to_string();
let a = client
.serp()
.google()
.organic_task_post(vec![request])
.await
.unwrap();
let id = "xxx";
let a = client
.serp()
.google()
.organic_task_get_advanced(id)
.await
.unwrap();
for task in a.tasks {
for result in task.result.unwrap() {
println!("{}", result.keyword);
for item in result.items.unwrap() {
match item {
SerpApiGoogleOrganicItem::Organic(v) => {
println!("organic {:?}", v);
}
SerpApiGoogleOrganicItem::PeopleAlsoAsk(v) => {
println!("PeopleAlsoAsk {:?}", v);
}
SerpApiGoogleOrganicItem::Unknown(v) => {
println!("type field: {:?}", v["type"]);
println!("Unknown {:?} {:?}", v.get("type"), v);
}
_ => {
println!("other");
}
}
}
}
}
}
#[tokio::test]
async fn job_location_country() {
let client = client();
let tasks = client.serp().google().jobs_locations().await.unwrap().tasks;
assert_ne!(tasks.len(), 0);
for task in tasks {
println!("{:}", task.id);
let results = task.result.unwrap();
assert_ne!(results.len(), 0);
println!("{:?}", results);
}
}
#[tokio::test]
async fn job() {
let client = client();
let mut request = SerpApiGoogleJobsTaskPostRequest::new("ja".to_string(), 1009307);
let id = "xxx";
let a = client
.serp()
.google()
.jobs_task_get_advanced(id)
.await
.unwrap();
let b = client.serp().google().jobs_task_get_html(id).await.unwrap();
for task in a.tasks {
for result in task.result.unwrap() {
println!("{}", result.keyword);
for item in result.items.unwrap() {
println!(
"{:?} {:?} {:?} {:?}",
item.rank_group, item.title, item.source_name, item.employer_name
);
}
}
}
}
#[cfg(test)]
mod news {
use crate::client;
#[tokio::test]
async fn post() {
let client = client();
let id = "12130243-8697-0066-0000-966d2a98fb1c";
let res = client
.serp()
.google()
.news_task_get_advanced(id)
.await
.unwrap();
for task in res.tasks {
for result in task.result.unwrap() {
println!("{:?}", result.keyword);
for item in result.items.unwrap() {
println!("{:?}*", item);
}
}
}
}
}
#[cfg(test)]
mod events {
use crate::client;
use data_for_seo::SerpApiGoogleEventsTaskPostRequest;
#[tokio::test]
async fn example() {
let client = client();
let res = client.serp().google().events_locations().await;
}
}
#[cfg(test)]
mod images {
use crate::client;
use data_for_seo::{SerpApiGoogleEventsTaskPostRequest, SerpApiGoogleImagesTaskPostRequest};
#[tokio::test]
async fn example() {
let client = client();
let id = "12130742-8697-0066-0000-7b63156695db";
let res = client
.serp()
.google()
.images_task_get_advanced(id)
.await
.unwrap();
for task in res.tasks {
for result in task.result.unwrap() {
println!("{:?}", result.keyword);
for item in result.items.unwrap() {
println!("{:?}*", item);
}
}
}
}
}
#[cfg(test)]
mod autocomplete {
use crate::client;
use data_for_seo::{
SerpApiGoogleAutoCompleteTaskPostRequest, SerpApiGoogleJobsTaskPostRequest,
};
#[tokio::test]
async fn post() {
let client = client();
let mut request = SerpApiGoogleAutoCompleteTaskPostRequest::new("ja".to_string(), 1009307);
request.keyword = "介護".to_string();
request.priority = Some(2);
let res = client
.serp()
.google()
.autocomplete_task_post(vec![request])
.await;
println!("{:?}", res);
let id = "xxx";
let res = client
.serp()
.google()
.autocomplete_task_get_advanced(id)
.await
.unwrap();
for task in res.tasks {
for result in task.result.unwrap() {
println!("{:?}", result.keyword);
for item in result.items.unwrap() {
println!(
"{:?} {:?} {:?}*",
item.suggestion_type, item.suggestion, item
);
}
}
}
}
}