# lirays
Rust client for the LiRAYS SCADA WebSocket + Protobuf API.
- Crate: [crates.io/crates/lirays](https://crates.io/crates/lirays)
- Docs: [docs.rs/lirays](https://docs.rs/lirays)
## Features
- Connect with or without authentication (`Authorization: Bearer <PAT>`)
- Namespace operations: list, create, delete, metadata edit
- Typed value operations: set/get for integer, float, text, and boolean
- Bulk namespace creation from JSON schema
- Realtime subscriptions for variable values
## Installation
```bash
cargo add lirays
```
## Quick Start
```rust
use lirays::{Client, ConnectionOptions};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let options = ConnectionOptions::new(
"127.0.0.1",
8245,
false, // tls
Some("pat_xxx.yyy".to_string()),
);
let client = Client::connect_with_options(options).await?;
let (_folders, vars) = client.list(Some("/".into()), 5_000).await?;
println!("vars: {}", vars.len());
client.disconnect().await?;
Ok(())
}
```
## Connection Modes
- `Client::connect(host, port, tls)`
- `Client::connect_with_pat(host, port, tls, pat_token)`
- `Client::connect_with_options(ConnectionOptions)`
- `ConnectionOptions::with_insecure_tls(true)` for local self-signed certs only
## Examples
A full scenario runner is provided in `examples/demo`.
Run all scenarios:
```bash
cargo run --example demo -- \
--demo all \
--host 127.0.0.1 \
--port 8245 \
--tls false \
--allow-insecure-tls false \
--auth true \
--pat-token "pat_xxx.yyy"
```
Run one scenario:
```bash
cargo run --example demo -- --demo basic --auth false
```
See [examples/demo/README.md](examples/demo/README.md) for all options.
For local development with self-signed certs, you can opt in to insecure TLS validation:
```bash
cargo run --example demo -- --demo basic --tls true --allow-insecure-tls true --auth false
```
## Release
This repository includes a GitHub Actions release workflow that publishes to crates.io using Trusted Publishing (OIDC) when you push a tag like `v0.1.2`.
## License
MIT ([LICENSE](LICENSE)).