1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//! # rsoap
//!
//! A SOAP client library for Rust with compile-time code generation from WSDL files.
//!
//! ## Quick Start
//!
//! ```no_run
//! use rsoap::{SoapClient, SoapOperation};
//!
//! #[tokio::main]
//! async fn main() -> anyhow::Result<()> {
//! let client = SoapClient::new("https://example.com/soap")?;
//! // Generated operation methods are called on the generated client trait impls.
//! Ok(())
//! }
//! ```
//!
//! ## Code Generation
//!
//! The `#[derive(SoapOperationMacro)]` macro reads a WSDL file at compile time and generates:
//! - Typed request/response structs matching the WSDL schema
//! - An implementation of [`SoapOperation`] from [`rsoap::client`]
//!
//! ```ignore
//! use rsoap::{SoapClient, SoapOperation};
//!
//! #[derive(SoapOperationMacro)]
//! #[soap(wsdl = "path/to/service.wsdl", operation_name = "GetWeather")]
//! pub struct GetWeather;
//!
//! async fn get_temp(client: &SoapClient) -> anyhow::Result<()> {
//! let request = getweather::Request { zipcode: "90210".into() };
//! let response = client.call(&GetWeather, &request).await?;
//! println!("Temp: {}", response.temperature);
//! }
//! ```
// Re-export core types at crate root for ergonomic access.
pub use ;
pub use SoapVersion;
pub use SoapError;
// Re-export the proc-macro so users can derive SoapOperationMacro on custom types.
pub use SoapOperation as SoapOperationMacro;
// Re-serialize dependencies so users don't need to pin versions.
pub use quick_xml;
pub use serde;
pub use thiserror;