jquants_api_client/client/free_plan_client.rs
1//! Free plan client implementation for JQuants API.
2
3use crate::{
4 api::{
5 daily_stock_prices::{DailyStockPricesApi, DailyStockPricesFreePlanResponse},
6 financial_statements::FinancialStatementsApi,
7 listed_issue_info::{ListedIssueInfoApi, ListedIssueInfoFreePlanResponse},
8 JQuantsApiClient, JQuantsPlanClient,
9 },
10 EarningsCalendarApi, TradingCalendarApi,
11};
12
13/// Free plan client for J-Quants API.
14///
15/// # Example
16///
17/// ```no_run
18/// use jquants_api_client::{
19/// DailyStockPricesApi, EarningsCalendarApi, FinancialStatementsApi, JQuantsBuilder, JQuantsFreePlanClient,
20/// JQuantsPlanClient, ListedIssueInfoApi, TradingCalendarApi, Paginatable
21/// };
22///
23/// async {
24/// // Authenticate with a refresh token.
25/// let client = JQuantsFreePlanClient::new_from_refresh_token("your_refresh_token".to_string());
26///
27/// // Get listed issue information.
28/// let response = client.get_listed_issue_info().send().await.unwrap();
29///
30/// // Get stock prices.
31/// let response = client.get_daily_stock_prices().send().await.unwrap();
32///
33/// // Paginate stock prices.
34/// let response = client.get_daily_stock_prices().fetch_all().await.unwrap();
35/// let response = client.get_daily_stock_prices().fetch_all_and_merge().await.unwrap();
36/// let stream = client.get_daily_stock_prices().fetch_pages_stream();
37///
38/// // Get trading calendar.
39/// let response = client.get_trading_calendar().send().await.unwrap();
40///
41/// // Get financial statements.
42/// let response = client.get_financial_statements().send().await.unwrap();
43///
44/// // Paginate stock prices.
45/// let response = client.get_financial_statements().fetch_all().await.unwrap();
46/// let response = client.get_financial_statements().fetch_all_and_merge().await.unwrap();
47/// let stream = client.get_financial_statements().fetch_pages_stream();
48///
49/// // Get earnings calendar.
50/// let response = client.get_earnings_calendar().send().await.unwrap();
51///
52/// // Paginate earnings calendar.
53/// let response = client.get_earnings_calendar().fetch_all().await.unwrap();
54/// let response = client.get_earnings_calendar().fetch_all_and_merge().await.unwrap();
55/// let stream = client.get_earnings_calendar().fetch_pages_stream();
56/// };
57/// ```
58#[derive(Clone)]
59pub struct JQuantsFreePlanClient {
60 pub(crate) api_client: JQuantsApiClient,
61}
62
63impl JQuantsPlanClient for JQuantsFreePlanClient {
64 fn new(api_client: JQuantsApiClient) -> Self {
65 Self { api_client }
66 }
67
68 fn get_api_client(&self) -> &JQuantsApiClient {
69 &self.api_client
70 }
71}
72
73impl ListedIssueInfoApi for JQuantsFreePlanClient {
74 type Response = ListedIssueInfoFreePlanResponse;
75}
76
77impl DailyStockPricesApi for JQuantsFreePlanClient {
78 type Response = DailyStockPricesFreePlanResponse;
79}
80
81impl TradingCalendarApi for JQuantsFreePlanClient {}
82
83impl FinancialStatementsApi for JQuantsFreePlanClient {}
84
85impl EarningsCalendarApi for JQuantsFreePlanClient {}