jquants_api_client/client/premium_plan_client.rs
1//! Premium plan client implementation for JQuants API.
2
3use crate::{
4 api::{
5 breakdown_trading_data::BreakdownTradingDataApi,
6 daily_stock_prices::{DailyStockPricesApi, DailyStockPricesPremiumPlanResponse},
7 financial_statements::FinancialStatementsApi,
8 listed_issue_info::{ListedIssueInfoApi, ListedIssueInfoPremiumPlanResponse},
9 morning_session_stock_prices::MorningSessionStockPricesApi,
10 short_sale_by_sector::ShortSaleBySectorApi,
11 weekly_margin_trading_outstandings::WeeklyMarginTradingOutstandingsApi,
12 JQuantsApiClient, JQuantsPlanClient,
13 },
14 CashDividendDataApi, EarningsCalendarApi, FinancialStatementDetailsApi, FuturesPricesApi,
15 IndexOptionPricesApi, IndicesApi, OptionsPricesApi, TopixPricesApi, TradingByInvestorTypeApi,
16 TradingCalendarApi,
17};
18
19/// Premium plan client for J-Quants API.
20///
21/// # Example
22///
23/// ```no_run
24/// use jquants_api_client::{
25/// BreakdownTradingDataApi, CashDividendDataApi, DailyStockPricesApi, EarningsCalendarApi, FinancialStatementsApi,
26/// FuturesPricesApi, FinancialStatementDetailsApi, JQuantsBuilder, JQuantsPlanClient, JQuantsPremiumPlanClient,
27/// IndexOptionPricesApi, IndicesApi, ListedIssueInfoApi, MorningSessionStockPricesApi, OptionsPricesApi,
28/// ShortSaleBySectorApi, TopixPricesApi, TradingByInvestorTypeApi, TradingCalendarApi, Paginatable,
29/// WeeklyMarginTradingOutstandingsApi
30/// };
31///
32/// async {
33/// // Authenticate with a refresh token.
34/// let client = JQuantsPremiumPlanClient::new_from_refresh_token("your_refresh_token".to_string());
35///
36/// // Get listed issue information.
37/// let response = client.get_listed_issue_info().send().await.unwrap();
38///
39/// // Get stock prices.
40/// let response = client.get_daily_stock_prices().send().await.unwrap();
41///
42/// // Paginate stock prices.
43/// let response = client.get_daily_stock_prices().fetch_all().await.unwrap();
44/// let response = client.get_daily_stock_prices().fetch_all_and_merge().await.unwrap();
45/// let stream = client.get_daily_stock_prices().fetch_pages_stream();
46///
47/// // Get morning session stock prices.
48/// let response = client.morning_session_stock_prices().send().await.unwrap();
49///
50/// // Paginate morning session stock prices.
51/// let response = client.morning_session_stock_prices().fetch_all().await.unwrap();
52/// let response = client.morning_session_stock_prices().fetch_all_and_merge().await.unwrap();
53/// let stream = client.morning_session_stock_prices().fetch_pages_stream();
54///
55/// // Get trading by investor type.
56/// let response = client.get_trading_by_investor_type().send().await.unwrap();
57///
58/// // Paginate trading by investor type.
59/// let response = client.get_trading_by_investor_type().fetch_all().await.unwrap();
60/// let response = client.get_trading_by_investor_type().fetch_all_and_merge().await.unwrap();
61/// let stream = client.get_trading_by_investor_type().fetch_pages_stream();
62///
63/// // Get margin trading outstandings.
64/// let response = client.get_weekly_margin_trading_outstandings().send().await.unwrap();
65///
66/// // Paginate margin trading outstandings.
67/// let response = client.get_weekly_margin_trading_outstandings().fetch_all().await.unwrap();
68/// let response = client.get_weekly_margin_trading_outstandings().fetch_all_and_merge().await.unwrap();
69/// let stream = client.get_weekly_margin_trading_outstandings().fetch_pages_stream();
70///
71/// // Get short sale value and ratio by sector.
72/// let response = client.get_short_sale_by_sector().send().await.unwrap();
73///
74/// // Paginate short sale value and ratio by sector.
75/// let response = client.get_short_sale_by_sector().fetch_all().await.unwrap();
76/// let response = client.get_short_sale_by_sector().fetch_all_and_merge().await.unwrap();
77/// let stream = client.get_short_sale_by_sector().fetch_pages_stream();
78///
79/// // Get trading calendar.
80/// let response = client.get_trading_calendar().send().await.unwrap();
81///
82/// // Get indices.
83/// let response = client.get_indices().send().await.unwrap();
84///
85/// // Paginate indices.
86/// let response = client.get_indices().fetch_all().await.unwrap();
87/// let response = client.get_indices().fetch_all_and_merge().await.unwrap();
88/// let stream = client.get_indices().fetch_pages_stream();
89///
90/// // Get TOPIX prices.
91/// let response = client.get_topix_prices().send().await.unwrap();
92///
93/// // Paginate TOPIX prices.
94/// let response = client.get_topix_prices().fetch_all().await.unwrap();
95/// let response = client.get_topix_prices().fetch_all_and_merge().await.unwrap();
96/// let stream = client.get_topix_prices().fetch_pages_stream();
97///
98/// // Get financial statements.
99/// let response = client.get_financial_statements().send().await.unwrap();
100///
101/// // Paginate stock prices.
102/// let response = client.get_financial_statements().fetch_all().await.unwrap();
103/// let response = client.get_financial_statements().fetch_all_and_merge().await.unwrap();
104/// let stream = client.get_financial_statements().fetch_pages_stream();
105///
106/// // Get financial statement detail.
107/// let response = client.get_financial_statement_details().send().await.unwrap();
108///
109/// // Paginate financial statement detail.
110/// let response = client.get_financial_statement_details().fetch_all().await.unwrap();
111/// let response = client.get_financial_statement_details().fetch_all_and_merge().await.unwrap();
112/// let stream = client.get_financial_statement_details().fetch_pages_stream();
113///
114/// // Get cash dividend data.
115/// let response = client.get_cash_dividend_data().send().await.unwrap();
116///
117/// // Paginate cash dividend data.
118/// let response = client.get_cash_dividend_data().fetch_all().await.unwrap();
119/// let response = client.get_cash_dividend_data().fetch_all_and_merge().await.unwrap();
120/// let stream = client.get_cash_dividend_data().fetch_pages_stream();
121///
122/// // Get earnings calendar.
123/// let response = client.get_earnings_calendar().send().await.unwrap();
124///
125/// // Paginate earnings calendar.
126/// let response = client.get_earnings_calendar().fetch_all().await.unwrap();
127/// let response = client.get_earnings_calendar().fetch_all_and_merge().await.unwrap();
128/// let stream = client.get_earnings_calendar().fetch_pages_stream();
129///
130/// // Get idnex option prices.
131/// let response = client.get_index_option_prices("2024-08-01").send().await.unwrap();
132///
133/// // Paginate idnex option prices.
134/// let response = client.get_index_option_prices("2024-08-01").fetch_all().await.unwrap();
135/// let response = client.get_index_option_prices("2024-08-01").fetch_all_and_merge().await.unwrap();
136/// let stream = client.get_index_option_prices("2024-08-01").fetch_pages_stream();
137///
138/// // Get futures prices.
139/// let response = client.get_futures_prices("2024-08-01").send().await.unwrap();
140///
141/// // Paginate futures prices.
142/// let response = client.get_futures_prices("2024-08-01").fetch_all().await.unwrap();
143/// let response = client.get_futures_prices("2024-08-01").fetch_all_and_merge().await.unwrap();
144/// let stream = client.get_futures_prices("2024-08-01").fetch_pages_stream();
145///
146/// // Get options prices.
147/// let response = client.get_options_prices("2024-08-01").send().await.unwrap();
148///
149/// // Paginate options prices.
150/// let response = client.get_options_prices("2024-08-01").fetch_all().await.unwrap();
151/// let response = client.get_options_prices("2024-08-01").fetch_all_and_merge().await.unwrap();
152/// let stream = client.get_options_prices("2024-08-01").fetch_pages_stream();
153/// };
154/// ```
155#[derive(Clone)]
156pub struct JQuantsPremiumPlanClient {
157 api_client: JQuantsApiClient,
158}
159
160impl JQuantsPlanClient for JQuantsPremiumPlanClient {
161 fn new(api_client: JQuantsApiClient) -> Self {
162 Self { api_client }
163 }
164
165 fn get_api_client(&self) -> &JQuantsApiClient {
166 &self.api_client
167 }
168}
169
170impl ListedIssueInfoApi for JQuantsPremiumPlanClient {
171 type Response = ListedIssueInfoPremiumPlanResponse;
172}
173
174impl DailyStockPricesApi for JQuantsPremiumPlanClient {
175 type Response = DailyStockPricesPremiumPlanResponse;
176}
177
178impl MorningSessionStockPricesApi for JQuantsPremiumPlanClient {}
179
180impl TradingByInvestorTypeApi for JQuantsPremiumPlanClient {}
181
182impl WeeklyMarginTradingOutstandingsApi for JQuantsPremiumPlanClient {}
183
184impl ShortSaleBySectorApi for JQuantsPremiumPlanClient {}
185
186impl BreakdownTradingDataApi for JQuantsPremiumPlanClient {}
187
188impl TradingCalendarApi for JQuantsPremiumPlanClient {}
189
190impl IndicesApi for JQuantsPremiumPlanClient {}
191
192impl TopixPricesApi for JQuantsPremiumPlanClient {}
193
194impl FinancialStatementsApi for JQuantsPremiumPlanClient {}
195
196impl FinancialStatementDetailsApi for JQuantsPremiumPlanClient {}
197
198impl CashDividendDataApi for JQuantsPremiumPlanClient {}
199
200impl EarningsCalendarApi for JQuantsPremiumPlanClient {}
201
202impl IndexOptionPricesApi for JQuantsPremiumPlanClient {}
203
204impl FuturesPricesApi for JQuantsPremiumPlanClient {}
205
206impl OptionsPricesApi for JQuantsPremiumPlanClient {}