marketstack 0.0.19

Rust bindings for Marketstack REST API
Documentation
use chrono::NaiveDate;
use marketstack::api::common::SortOrder;
use marketstack::api::dividends::Dividends;
use marketstack::api::splits::Splits;
use marketstack::api::{eod, tickers, Query};
use marketstack::{
    DividendsData, EodDataItem, Marketstack, SplitsData, TickersData, TickersEodData,
};

mod setup;

#[test]
#[ignore]
fn test_tickers() {
    let api_key = setup::setup_key();
    let client = Marketstack::new_insecure("api.marketstack.com", api_key).unwrap();

    let endpoint = tickers::Tickers::builder()
        .limit(3)
        .unwrap()
        .build()
        .unwrap();
    let tickers_result: TickersData = endpoint.query(&client).unwrap();

    assert_eq!(tickers_result.pagination.limit, 3);
}

#[test]
#[ignore]
fn test_tickers_eod() {
    let api_key = setup::setup_key();
    let client = Marketstack::new_insecure("api.marketstack.com", api_key).unwrap();

    let endpoint = tickers::Tickers::builder()
        .ticker("AAPL")
        .eod(
            eod::Eod::builder()
                .sort(SortOrder::Ascending)
                .build()
                .unwrap(),
        )
        .build()
        .unwrap();

    let tickers_eod_result: TickersEodData = endpoint.query(&client).unwrap();

    assert_eq!(tickers_eod_result.data.eod[0].symbol, "AAPL");
}

#[test]
#[ignore]
fn test_tickers_eod_latest() {
    let api_key = setup::setup_key();
    let client = Marketstack::new_insecure("api.marketstack.com", api_key).unwrap();

    let endpoint = tickers::Tickers::builder()
        .ticker("AAPL")
        .eod(eod::Eod::builder().latest(true).build().unwrap())
        .build()
        .unwrap();

    let tickers_eod_latest_result: EodDataItem = endpoint.query(&client).unwrap();

    assert_eq!(tickers_eod_latest_result.symbol, "AAPL");
}

#[test]
#[ignore]
fn test_tickers_eod_date() {
    let api_key = setup::setup_key();
    let client = Marketstack::new_insecure("api.marketstack.com", api_key).unwrap();

    let endpoint = tickers::Tickers::builder()
        .ticker("AAPL")
        .eod(
            eod::Eod::builder()
                .date(NaiveDate::from_ymd_opt(2023, 10, 25).unwrap())
                .build()
                .unwrap(),
        )
        .build()
        .unwrap();

    let tickers_eod_date_result: EodDataItem = endpoint.query(&client).unwrap();

    assert_eq!(tickers_eod_date_result.symbol, "AAPL");
}

#[test]
#[ignore]
fn test_tickers_splits() {
    let api_key = setup::setup_key();
    let client = Marketstack::new_insecure("api.marketstack.com", api_key).unwrap();

    let endpoint = tickers::Tickers::builder()
        .ticker("AAPL")
        .splits(Splits::builder().build().unwrap())
        .build()
        .unwrap();

    let tickers_splits_result: SplitsData = endpoint.query(&client).unwrap();

    assert_eq!(tickers_splits_result.data[0].symbol, "AAPL")
}

#[test]
#[ignore]
fn test_tickers_dividends() {
    let api_key = setup::setup_key();
    let client = Marketstack::new_insecure("api.marketstack.com", api_key).unwrap();

    let endpoint = tickers::Tickers::builder()
        .ticker("AAPL")
        .dividends(Dividends::builder().build().unwrap())
        .build()
        .unwrap();

    let tickers_dividends_result: DividendsData = endpoint.query(&client).unwrap();

    assert_eq!(tickers_dividends_result.data[0].symbol, "AAPL")
}