https://github.com/artemevsevev/finam
Finam SDK
https://github.com/artemevsevev/finam
api finam grpc rust sdk
Last synced: about 2 months ago
JSON representation
Finam SDK
- Host: GitHub
- URL: https://github.com/artemevsevev/finam
- Owner: artemevsevev
- License: mit
- Created: 2025-08-23T02:17:47.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2026-01-23T14:45:27.000Z (2 months ago)
- Last Synced: 2026-01-23T22:42:15.089Z (2 months ago)
- Topics: api, finam, grpc, rust, sdk
- Language: Rust
- Homepage: https://crates.io/crates/finam
- Size: 146 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Finam API SDK
Версия API: [2.12.0 (11.02.2026)](https://github.com/FinamWeb/finam-trade-api/releases/tag/Release-2.12.0)
Документация: [https://tradeapi.finam.ru/docs/about/](https://tradeapi.finam.ru/docs/about/)
## Пример
```rust
async fn main() {
let secret = env::var("TOKEN").unwrap();
let finam = finam::FinamSdk::new(&secret).await.unwrap();
let quote_response = finam
.market_data()
.last_quote(QuoteRequest {
symbol: "SBER@MISX".to_string(),
})
.await
.unwrap()
.into_inner();
if let Some(quote) = quote_response.quote {
println!("{:?} {:?}", quote.timestamp, quote.last);
}
let mut streaming = finam
.market_data()
.subscribe_latest_trades(SubscribeLatestTradesRequest {
symbol: "SBER@MISX".to_string(),
})
.await
.unwrap()
.into_inner();
loop {
if let Some(message) = streaming.message().await.unwrap() {
println!("{:?}", message.trades);
}
}
}
```
## Управление ресурсами
SDK автоматически управляет жизненным циклом JWT токенов. При создании экземпляра `FinamSdk` запускается фоновая задача, которая периодически обновляет токен каждые 10 минут.
### Автоматическая остановка фоновых задач
Когда экземпляр `FinamSdk` уничтожается (выходит из области видимости), все связанные с ним фоновые задачи обновления токенов автоматически останавливаются:
```rust
async fn example() {
{
let sdk = FinamSdk::new("secret").await.unwrap();
// Использование SDK...
} // SDK уничтожается здесь, фоновая задача остановлена
// Фоновая задача больше не выполняется
}
```