Skip to content

Latest commit

 

History

History
61 lines (47 loc) · 2.04 KB

File metadata and controls

61 lines (47 loc) · 2.04 KB

Finam API SDK

Версия API: 2.13.0 (02.03.2026)

Документация: https://api.finam.ru/getting-started/

Пример

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 уничтожается (выходит из области видимости), все связанные с ним фоновые задачи обновления токенов автоматически останавливаются:

async fn example() {
    {
        let sdk = FinamSdk::new("secret").await.unwrap();
        // Использование SDK...
    } // SDK уничтожается здесь, фоновая задача остановлена

    // Фоновая задача больше не выполняется
}