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