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 {}