jquants_api_client/client/
light_plan_client.rs

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