jquants_api_client/client/
free_plan_client.rs

1//! Free plan client implementation for JQuants API.
2
3use crate::{
4    api::{
5        daily_stock_prices::{DailyStockPricesApi, DailyStockPricesFreePlanResponse},
6        financial_statements::FinancialStatementsApi,
7        listed_issue_info::{ListedIssueInfoApi, ListedIssueInfoFreePlanResponse},
8        JQuantsApiClient, JQuantsPlanClient,
9    },
10    EarningsCalendarApi, TradingCalendarApi,
11};
12
13/// Free plan client for J-Quants API.
14///
15/// # Example
16///
17/// ```no_run
18/// use jquants_api_client::{
19///     DailyStockPricesApi, EarningsCalendarApi, FinancialStatementsApi, JQuantsBuilder, JQuantsFreePlanClient,
20///     JQuantsPlanClient, ListedIssueInfoApi, TradingCalendarApi, Paginatable
21/// };
22///
23/// async {
24///     // Authenticate with a refresh token.
25///     let client = JQuantsFreePlanClient::new_from_refresh_token("your_refresh_token".to_string());
26///
27///     // Get listed issue information.
28///     let response = client.get_listed_issue_info().send().await.unwrap();
29///
30///     // Get stock prices.
31///     let response = client.get_daily_stock_prices().send().await.unwrap();
32///
33///     // Paginate stock prices.
34///     let response = client.get_daily_stock_prices().fetch_all().await.unwrap();
35///     let response = client.get_daily_stock_prices().fetch_all_and_merge().await.unwrap();
36///     let stream = client.get_daily_stock_prices().fetch_pages_stream();
37///
38///     // Get trading calendar.
39///     let response = client.get_trading_calendar().send().await.unwrap();
40///
41///     // Get financial statements.
42///     let response = client.get_financial_statements().send().await.unwrap();
43///
44///     // Paginate stock prices.
45///     let response = client.get_financial_statements().fetch_all().await.unwrap();
46///     let response = client.get_financial_statements().fetch_all_and_merge().await.unwrap();
47///     let stream = client.get_financial_statements().fetch_pages_stream();
48///
49///     // Get earnings calendar.
50///     let response = client.get_earnings_calendar().send().await.unwrap();
51///
52///     // Paginate earnings calendar.
53///     let response = client.get_earnings_calendar().fetch_all().await.unwrap();
54///     let response = client.get_earnings_calendar().fetch_all_and_merge().await.unwrap();
55///     let stream = client.get_earnings_calendar().fetch_pages_stream();
56/// };
57/// ```
58#[derive(Clone)]
59pub struct JQuantsFreePlanClient {
60    pub(crate) api_client: JQuantsApiClient,
61}
62
63impl JQuantsPlanClient for JQuantsFreePlanClient {
64    fn new(api_client: JQuantsApiClient) -> Self {
65        Self { api_client }
66    }
67
68    fn get_api_client(&self) -> &JQuantsApiClient {
69        &self.api_client
70    }
71}
72
73impl ListedIssueInfoApi for JQuantsFreePlanClient {
74    type Response = ListedIssueInfoFreePlanResponse;
75}
76
77impl DailyStockPricesApi for JQuantsFreePlanClient {
78    type Response = DailyStockPricesFreePlanResponse;
79}
80
81impl TradingCalendarApi for JQuantsFreePlanClient {}
82
83impl FinancialStatementsApi for JQuantsFreePlanClient {}
84
85impl EarningsCalendarApi for JQuantsFreePlanClient {}