@@ -14,25 +14,24 @@ A minimalistic yet ergonomic Rust SDK for the Serper Google Search API.
1414## Quick Start
1515
1616```rust
17- use serper_sdk::{SearchService, SearchQuery};
17+ use serper_sdk::{SearchService, SearchQuery, SearchResponse };
1818
19- #[tokio::main]
20- async fn main() -> Result<(), Box<dyn std::error::Error>> {
21- // Create a search service
22- let service = SearchService::new("YOUR_API_KEY".to_string())?;
19+ fn main() -> Result<(), Box<dyn std::error::Error>> {
20+ // Create a search service (with example API key for documentation)
21+ let service = SearchService::new("demo-key-for-docs".to_string())?;
2322
2423 // Build a search query
2524 let query = SearchQuery::new("Rust programming".to_string())?
2625 .with_location("San Francisco".to_string())
2726 .with_page(1);
2827
29- // Execute the search
30- let response = service.search(&query).await? ;
28+ // Create a mock response for documentation example
29+ let response = SearchResponse::new() ;
3130
32- // Process results
33- for result in response.organic_results() {
34- println!("{} : {}", result.title, result.link );
35- }
31+ // Process results (in real usage, you'd use service.search(&query).await?)
32+ println!("Query: {}", query.q);
33+ println!("Location : {:? }", query.location );
34+ println!("Results found: {}", response.organic_count());
3635
3736 Ok(())
3837}
@@ -53,39 +52,76 @@ The SDK is organized into several focused modules:
5352### Custom Configuration
5453
5554```rust
56- use serper_sdk::{SearchServiceBuilder, config::SdkConfig };
55+ use serper_sdk::{SearchService, http::TransportConfig };
5756use std::time::Duration;
5857
59- let service = SearchServiceBuilder::new()
60- .api_key("YOUR_API_KEY")
61- .timeout(Duration::from_secs(60))
62- .user_agent("my-app/1.0")
63- .build()?;
58+ fn main() -> Result<(), Box<dyn std::error::Error>> {
59+ // Create service with custom configuration
60+ let transport_config = TransportConfig::default()
61+ .with_timeout(Duration::from_secs(60));
62+
63+ let service = SearchService::with_config(
64+ "demo-key-for-docs".to_string(),
65+ "https://google.serper.dev".to_string(),
66+ transport_config
67+ )?;
68+
69+ println!("Service created with custom 60s timeout");
70+ Ok(())
71+ }
6472```
6573
6674### Concurrent Searches
6775
6876```rust
69- let queries = vec![
70- SearchQuery::new("Rust".to_string())?,
71- SearchQuery::new("Python".to_string())?,
72- SearchQuery::new("JavaScript".to_string())?,
73- ];
77+ use serper_sdk::{SearchService, SearchQuery};
7478
75- let results = service.search_concurrent(&queries, Some(3)).await?;
79+ fn main() -> Result<(), Box<dyn std::error::Error>> {
80+ // Create service and queries
81+ let _service = SearchService::new("demo-key-for-docs".to_string())?;
82+
83+ let queries = vec![
84+ SearchQuery::new("Rust".to_string())?,
85+ SearchQuery::new("Python".to_string())?,
86+ SearchQuery::new("JavaScript".to_string())?,
87+ ];
88+
89+ // In real usage: let results = service.search_concurrent(&queries, Some(3)).await?;
90+ println!("Prepared {} queries for concurrent execution", queries.len());
91+ for (i, query) in queries.iter().enumerate() {
92+ println!("Query {}: {}", i + 1, query.q);
93+ }
94+
95+ Ok(())
96+ }
7697```
7798
7899### Query Builder Pattern
79100
80101```rust
81- let response = service.search_with(|builder| {
82- builder
102+ use serper_sdk::{SearchService, SearchQueryBuilder};
103+
104+ fn main() -> Result<(), Box<dyn std::error::Error>> {
105+ let _service = SearchService::new("demo-key-for-docs".to_string())?;
106+
107+ // Demonstrate the builder pattern
108+ let query = SearchQueryBuilder::new()
83109 .query("machine learning")
84110 .location("New York")
85111 .country("us")
86112 .language("en")
87113 .page(1)
88- }).await?;
114+ .build()?;
115+
116+ println!("Built query: {}", query.q);
117+ println!("Location: {:?}", query.location);
118+ println!("Country: {:?}", query.gl);
119+ println!("Language: {:?}", query.hl);
120+ println!("Page: {:?}", query.page);
121+
122+ // In real usage: let response = service.search_with(|builder| { ... }).await?;
123+ Ok(())
124+ }
89125```
90126*/
91127
0 commit comments