jquants_api_client/client/standard_plan_client.rs
1//! Standard plan client implementation for JQuants API.
2
3use crate::{
4 api::{
5 daily_stock_prices::{DailyStockPricesApi, DailyStockPricesStandardPlanResponse},
6 financial_statements::FinancialStatementsApi,
7 listed_issue_info::{ListedIssueInfoApi, ListedIssueInfoStandardPlanResponse},
8 short_sale_by_sector::ShortSaleBySectorApi,
9 weekly_margin_trading_outstandings::WeeklyMarginTradingOutstandingsApi,
10 JQuantsApiClient, JQuantsPlanClient,
11 },
12 EarningsCalendarApi, IndexOptionPricesApi, IndicesApi, TopixPricesApi,
13 TradingByInvestorTypeApi, TradingCalendarApi,
14};
15
16/// Standard plan client for J-Quants API.
17///
18/// # Example
19///
20/// ```no_run
21/// use jquants_api_client::{
22/// DailyStockPricesApi, EarningsCalendarApi, FinancialStatementsApi, JQuantsBuilder, JQuantsPlanClient,
23/// JQuantsStandardPlanClient, IndexOptionPricesApi, IndicesApi, ListedIssueInfoApi, ShortSaleBySectorApi,
24/// TopixPricesApi, TradingByInvestorTypeApi, TradingCalendarApi, Paginatable, WeeklyMarginTradingOutstandingsApi
25/// };
26///
27/// async {
28/// // Authenticate with a refresh token.
29/// let client = JQuantsStandardPlanClient::new_from_refresh_token("your_refresh_token".to_string());
30///
31/// // Get listed issue information.
32/// let response = client.get_listed_issue_info().send().await.unwrap();
33///
34/// // Get stock prices.
35/// let response = client.get_daily_stock_prices().send().await.unwrap();
36///
37/// // Paginate stock prices.
38/// let response = client.get_daily_stock_prices().fetch_all().await.unwrap();
39/// let response = client.get_daily_stock_prices().fetch_all_and_merge().await.unwrap();
40/// let stream = client.get_daily_stock_prices().fetch_pages_stream();
41///
42/// // Get trading by investor type.
43/// let response = client.get_trading_by_investor_type().send().await.unwrap();
44///
45/// // Paginate trading by investor type.
46/// let response = client.get_trading_by_investor_type().fetch_all().await.unwrap();
47/// let response = client.get_trading_by_investor_type().fetch_all_and_merge().await.unwrap();
48/// let stream = client.get_trading_by_investor_type().fetch_pages_stream();
49///
50/// // Get margin trading outstandings.
51/// let response = client.get_weekly_margin_trading_outstandings().send().await.unwrap();
52///
53/// // Paginate margin trading outstandings.
54/// let response = client.get_weekly_margin_trading_outstandings().fetch_all().await.unwrap();
55/// let response = client.get_weekly_margin_trading_outstandings().fetch_all_and_merge().await.unwrap();
56/// let stream = client.get_weekly_margin_trading_outstandings().fetch_pages_stream();
57///
58/// // Get short sale value and ratio by sector.
59/// let response = client.get_weekly_margin_trading_outstandings().send().await.unwrap();
60///
61/// // Paginate short sale value and ratio by sector.
62/// let response = client.get_weekly_margin_trading_outstandings().fetch_all().await.unwrap();
63/// let response = client.get_weekly_margin_trading_outstandings().fetch_all_and_merge().await.unwrap();
64/// let stream = client.get_weekly_margin_trading_outstandings().fetch_pages_stream();
65///
66/// // Get trading calendar.
67/// let response = client.get_trading_calendar().send().await.unwrap();
68///
69/// // Get indices.
70/// let response = client.get_indices().send().await.unwrap();
71///
72/// // Paginate indices.
73/// let response = client.get_indices().fetch_all().await.unwrap();
74/// let response = client.get_indices().fetch_all_and_merge().await.unwrap();
75/// let stream = client.get_indices().fetch_pages_stream();
76///
77/// // Get TOPIX prices.
78/// let response = client.get_topix_prices().send().await.unwrap();
79///
80/// // Paginate TOPIX prices.
81/// let response = client.get_topix_prices().fetch_all().await.unwrap();
82/// let response = client.get_topix_prices().fetch_all_and_merge().await.unwrap();
83/// let stream = client.get_topix_prices().fetch_pages_stream();
84///
85/// // Get financial statements.
86/// let response = client.get_financial_statements().send().await.unwrap();
87///
88/// // Paginate stock prices.
89/// let response = client.get_financial_statements().fetch_all().await.unwrap();
90/// let response = client.get_financial_statements().fetch_all_and_merge().await.unwrap();
91/// let stream = client.get_financial_statements().fetch_pages_stream();
92///
93/// // Get earnings calendar.
94/// let response = client.get_earnings_calendar().send().await.unwrap();
95///
96/// // Paginate earnings calendar.
97/// let response = client.get_earnings_calendar().fetch_all().await.unwrap();
98/// let response = client.get_earnings_calendar().fetch_all_and_merge().await.unwrap();
99/// let stream = client.get_earnings_calendar().fetch_pages_stream();
100///
101/// // Get idnex option prices.
102/// let response = client.get_index_option_prices("2024-08-01").send().await.unwrap();
103///
104/// // Paginate idnex option prices.
105/// let response = client.get_index_option_prices("2024-08-01").fetch_all().await.unwrap();
106/// let response = client.get_index_option_prices("2024-08-01").fetch_all_and_merge().await.unwrap();
107/// let stream = client.get_index_option_prices("2024-08-01").fetch_pages_stream();
108/// };
109/// ```
110#[derive(Clone)]
111pub struct JQuantsStandardPlanClient {
112 api_client: JQuantsApiClient,
113}
114
115impl JQuantsPlanClient for JQuantsStandardPlanClient {
116 fn new(api_client: JQuantsApiClient) -> Self {
117 Self { api_client }
118 }
119
120 fn get_api_client(&self) -> &JQuantsApiClient {
121 &self.api_client
122 }
123}
124
125impl ListedIssueInfoApi for JQuantsStandardPlanClient {
126 type Response = ListedIssueInfoStandardPlanResponse;
127}
128
129impl DailyStockPricesApi for JQuantsStandardPlanClient {
130 type Response = DailyStockPricesStandardPlanResponse;
131}
132
133impl TradingByInvestorTypeApi for JQuantsStandardPlanClient {}
134
135impl WeeklyMarginTradingOutstandingsApi for JQuantsStandardPlanClient {}
136
137impl ShortSaleBySectorApi for JQuantsStandardPlanClient {}
138
139impl TradingCalendarApi for JQuantsStandardPlanClient {}
140
141impl IndicesApi for JQuantsStandardPlanClient {}
142
143impl TopixPricesApi for JQuantsStandardPlanClient {}
144
145impl FinancialStatementsApi for JQuantsStandardPlanClient {}
146
147impl EarningsCalendarApi for JQuantsStandardPlanClient {}
148
149impl IndexOptionPricesApi for JQuantsStandardPlanClient {}