Expand description
§WEBSERVICES Client
wwsvc_rs
is a web client which is used to consume SoftENGINE’s WEBSERVICES, a proprietary API for their software WEBWARE.
§Usage
Here is an example using the derive
feature, which is the preferred way
of using this crate.
use wwsvc_rs::{WebwareClient, Unregistered, WWSVCGetData, collection};
#[derive(WWSVCGetData, Debug, Clone, serde::Deserialize)]
#[wwsvc(function = "ARTIKEL")]
pub struct ArticleData {
#[serde(rename = "ART_1_25")]
pub article_number: String
}
#[tokio::main]
async fn main() {
let client = WebwareClient::builder()
.webware_url("https://meine-webware.de")
.vendor_hash("my-vendor-hash")
.app_hash("my-app-hash")
.secret("1")
.revision(1)
.build();
let mut registered_client = client.register().await.expect("failed to register");
let articles = ArticleData::get(&mut registered_client, collection! {
"ARTNR" => "Artikel19Prozent",
}).await;
println!("{:#?}", articles);
registered_client.deregister().await.unwrap();
}
You can, however, also define your own data structures to use and reuse. For these purposes, you can directly use the client:
use reqwest::Method;
use wwsvc_rs::{collection, WebwareClient, WWSVCGetData, generate_get_response};
#[derive(Debug, serde::Deserialize, Clone)]
pub struct ArticleData {
#[serde(rename = "ART_1_25")]
pub article_number: String,
}
// You don't have to use this macro, it does however make generating responses a lot easier.
generate_get_response!(ArticleResponse, "ARTIKELLISTE", ArticleContainer, "ARTIKEL");
#[tokio::main]
async fn main() {
let client = WebwareClient::builder()
.webware_url("https://meine-webware.de")
.vendor_hash("my-vendor-hash")
.app_hash("my-app-hash")
.secret("1")
.revision(1)
.build();
let mut registered_client = client.register().await.expect("failed to register");
let articles = registered_client.request_generic::<ArticleResponse<ArticleData>>(Method::PUT, "ARTIKEL.GET", 1, collection! {
"ARTNR" => "Artikel19Prozent",
}, None)
.await
.unwrap();
println!("{:#?}", articles.container.list.unwrap());
registered_client.deregister().await.unwrap();
}
Re-exports§
pub use app_hash::AppHash;
pub use cursor::Cursor;
pub use traits::WWSVCGetData;
pub use client::WebwareClient;
pub use error::WWSVCError;
pub use futures;
pub use client::states::*;
Modules§
- Module containing the app hash, which is needed for each request.
- Module containing the client.
- Module containing the pagination cursor.
- Module containing the error type.
- Module containing the macros.
- Module containing common response types.
- Module containing trais.
Macros§
- Generates a collection with syntactic sugar for vecs, sets and maps.
- Generates a response struct with a container struct.
Structs§
- Credentials for the client.
- The Request Method (VERB)
- A Response to a submitted
Request
.
Enums§
- Represents any valid JSON value.
Type Aliases§
- Result type for the wwsvc-rs crate.
Attribute Macros§
Derive Macros§
- Generates a response and a container struct based on the name of the struct and the function name.