bing_webmaster_api/lib.rs
1//! # Bing Webmaster API Client
2//!
3//! This crate provides a Rust client for the [Bing Webmaster API](https://learn.microsoft.com/en-us/bingwebmaster/),
4//! allowing you to interact with Bing Webmaster Tools programmatically.
5//!
6//! ## Features
7//!
8//! - **Complete API Coverage**: All non-obsolete methods from the IWebmasterApi interface
9//! - **Type-Safe**: Strongly typed structures with serde support
10//! - **Async/Await**: Built for modern async Rust applications
11//! - **Middleware Support**: Built on reqwest-middleware for extensibility
12//! - **Error Handling**: Comprehensive error handling with specific error types and anyhow integration
13//!
14//! ## Quick Start
15//!
16//! ```rust,no_run
17//! use bing_webmaster_api::{BingWebmasterClient, Result};
18//!
19//! #[tokio::main]
20//! async fn main() -> Result<()> {
21//! let client = BingWebmasterClient::new("your-api-key".to_string());
22//!
23//! // Add a site
24//! client.add_site("https://example.com").await?;
25//!
26//! // Submit URLs
27//! client.submit_url("https://example.com", "https://example.com/page1").await?;
28//!
29//! // Get crawl issues
30//! let issues = client.get_crawl_issues("https://example.com").await?;
31//! println!("Found {} URLs with issues", issues.len());
32//!
33//! Ok(())
34//! }
35//! ```
36//!
37//! ## API Methods
38//!
39//! ### Site Management
40//! - [`add_site`](BingWebmasterClient::add_site) - Add a new site
41//! - [`verify_site`](BingWebmasterClient::verify_site) - Verify site ownership
42//! - [`add_site_roles`](BingWebmasterClient::add_site_roles) - Manage user permissions
43//!
44//! ### URL Submission
45//! - [`submit_url`](BingWebmasterClient::submit_url) - Submit single URL
46//! - [`submit_url_batch`](BingWebmasterClient::submit_url_batch) - Submit multiple URLs
47//! - [`submit_content`](BingWebmasterClient::submit_content) - Submit content with metadata
48//!
49//! ### Analytics
50//! - [`get_crawl_issues`](BingWebmasterClient::get_crawl_issues) - Get crawl problems
51//! - [`get_page_stats`](BingWebmasterClient::get_page_stats) - Get traffic statistics
52//! - [`get_crawl_stats`](BingWebmasterClient::get_crawl_stats) - Get crawl statistics
53
54pub mod client;
55pub mod dto;
56pub mod error;
57
58pub use client::BingWebmasterClient;
59pub use dto::*;
60pub use error::{BingErrorCode, Result, WebmasterApiError};
61
62// Re-export middleware types for convenience
63pub use reqwest_middleware::{ClientBuilder, Middleware};