marketstack 0.0.19

Rust bindings for Marketstack REST API
Documentation
use chrono::NaiveDate;

use marketstack::api::{splits, AsyncQuery, Query};
use marketstack::{AsyncMarketstack, Marketstack, SplitsData};

mod setup;

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

    let endpoint = splits::Splits::builder()
        .symbol("AAPL")
        .limit(3)
        .unwrap()
        .build()
        .unwrap();
    let splits_result: SplitsData = endpoint.query(&client).unwrap();

    assert_eq!(splits_result.pagination.limit, 3);
    assert_eq!(splits_result.pagination.offset, 0);

    assert_eq!(splits_result.data.len(), 3);
}

#[tokio::test]
#[ignore]
async fn test_async_splits() {
    let api_key = setup::setup_key();
    let client = AsyncMarketstack::new_insecure("api.marketstack.com", api_key)
        .await
        .unwrap();

    let endpoint = splits::Splits::builder()
        .limit(3)
        .unwrap()
        .symbol("AAPL")
        .build()
        .unwrap();
    let eod_result: SplitsData = endpoint.query_async(&client).await.unwrap();

    assert_eq!(eod_result.pagination.limit, 3);
    assert_eq!(eod_result.pagination.offset, 0);

    assert_eq!(eod_result.data.len(), 3);
}

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

    let endpoint = splits::Splits::builder()
        .symbol("AAPL")
        .date_from(NaiveDate::from_ymd_opt(2020, 8, 29).unwrap())
        .date_to(NaiveDate::from_ymd_opt(2020, 9, 2).unwrap())
        .build()
        .unwrap();
    let splits_result: SplitsData = endpoint.query(&client).unwrap();

    assert_eq!(splits_result.data.len(), 1);
    assert_eq!(splits_result.data[0].split_factor, 4.0);
}