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