Быстрый старт для Rust
Обращайтесь к инфраструктурному API /platform/v1 с помощью генерируемого Rust-крейта forestvpn-console-api-client.
forestvpn-console-api-client — это генерируемый Rust-клиент для плоскости
/platform/v1, расположенный в
forestvpn-sdk/crates/forestvpn-console-api-client репозитория ForestVPN;
те же операции и модели, что описаны в справочнике API.
Честно о распространении: крейта пока нет на crates.io. Вы подключаете его как зависимость по пути из локальной копии исходников.
Что понадобится
- Набор инструментов Rust (rustup.rs)
- Локальная копия репозитория ForestVPN
- API-ключ проекта (
fvpn_v1_…) — см. API-ключи
1. Создайте крейт с зависимостью по пути
[package]
name = "forestvpn-rust-quickstart"
version = "0.1.0"
edition = "2021"
publish = false
[dependencies]
# The generated PLATFORM-plane client, straight from the source checkout.
# Adjust the path to wherever your project sits relative to the checkout.
forestvpn-console-api-client = { path = "../../../../forestvpn-sdk/crates/forestvpn-console-api-client" }
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
# Standalone crate: keep it out of any surrounding Cargo workspace.
[workspace]2. Первый вызов: получите список API-ключей
use forestvpn_console_api_client::apis::configuration::Configuration;
use forestvpn_console_api_client::apis::platform_api_keys_api::list_platform_api_keys;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut config = Configuration::new();
config.base_path = "https://api.fvpn.net".to_owned();
// A project API key (fvpn_v1_…) minted in the console. Project-bound.
config.bearer_access_token = Some(std::env::var("FVPN_API_KEY")?);
let project_id = std::env::var("FVPN_PROJECT_ID")?;
let keys = list_platform_api_keys(&config, &project_id).await?;
for key in keys {
let last_used = key
.last_used_at
.flatten()
.map(|t| t.to_rfc3339())
.unwrap_or_else(|| "never".to_owned());
println!("{} ({}) last used: {}", key.name, key.key_prefix, last_used);
}
Ok(())
}Как и в любом генерируемом клиенте, аутентификация — это просто ключ
(Authorization: Bearer fvpn_v1_…), а идентификатор проекта передаётся в
заголовке X-Project-Id. Ключ привязан к проекту — ключ и идентификатор
проекта должны совпадать, иначе вызов вернёт 401.
3. Запуск
FVPN_API_KEY=fvpn_v1_… FVPN_PROJECT_ID=<your-project-uuid> cargo runОжидаемый вывод: по строке на каждый ключ — имя, отображаемый префикс и время, когда ключ в последний раз аутентифицировал запрос.
Чем проверяется
scripts/quickstart-verify/rust-client.sh — выполняет cargo check для
этого самого крейта (сниппет выше, байт в байт) против клиента-зависимости
по пути при каждом прогоне CI.