1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5pub enum Api {
6 StockBasic,
7 FundBasic,
8 FundDaily,
9 FundPortfolio,
10 Daily,
11 DailyBasic,
12 MoneyflowMktDc,
13 Weekly,
14 Monthly,
15 IndexDaily,
16 IndexWeekly,
17 IndexMonthly,
18 TradeCal,
19 Margin,
20 StockCompany,
21 MarginDetail,
22 StkHoldernumber,
23 ThsIndex,
24 ThsMember,
25 ThsDaily,
26 ThsHot,
27 FinaMainbz,
28 FinaMainbzVip,
29 FinaIndicator,
30 Balancesheet,
31 Income,
32 Cashflow,
33 IndexBasic,
34 IndexDailyBasic,
35 Moneyflow,
36 MoneyflowIndustryThs,
37
38 UsBasic,
39 UsDaily,
40 Custom(String), }
42
43impl Api {
44 pub fn name(&self) -> String {
45 match self {
46 Api::StockBasic => "stock_basic".to_string(),
47 Api::FundBasic => "fund_basic".to_string(),
48 Api::FundDaily => "fund_daily".to_string(),
49 Api::FundPortfolio => "fund_portfolio".to_string(),
50 Api::Daily => "daily".to_string(),
51 Api::DailyBasic => "daily_basic".to_string(),
52 Api::MoneyflowMktDc => "moneyflow_mkt_dc".to_string(),
53 Api::Weekly => "weekly".to_string(),
54 Api::Monthly => "monthly".to_string(),
55 Api::IndexDaily => "index_daily".to_string(),
56 Api::IndexWeekly => "index_weekly".to_string(),
57 Api::IndexMonthly => "index_monthly".to_string(),
58 Api::TradeCal => "trade_cal".to_string(),
59 Api::Margin => "margin".to_string(),
60 Api::StockCompany => "stock_company".to_string(),
61 Api::MarginDetail => "margin_detail".to_string(),
62 Api::StkHoldernumber => "stk_holdernumber".to_string(),
63 Api::ThsIndex => "ths_index".to_string(),
64 Api::ThsMember => "ths_member".to_string(),
65 Api::ThsDaily => "ths_daily".to_string(),
66 Api::ThsHot => "ths_hot".to_string(),
67 Api::FinaMainbz => "fina_mainbz".to_string(),
68 Api::FinaMainbzVip => "fina_mainbz_vip".to_string(),
69 Api::FinaIndicator => "fina_indicator".to_string(),
70 Api::Balancesheet => "balancesheet".to_string(),
71 Api::Income => "income".to_string(),
72 Api::Cashflow => "cashflow".to_string(),
73 Api::IndexBasic => "index_basic".to_string(),
74 Api::IndexDailyBasic => "index_daily_basic".to_string(),
75 Api::Moneyflow => "moneyflow".to_string(),
76 Api::MoneyflowIndustryThs => "moneyflow_industry_ths".to_string(),
77 Api::UsBasic => "us_basic".to_string(),
78 Api::UsDaily => "us_daily".to_string(),
79 Api::Custom(name) => name.clone(),
80 }
81 }
82}
83
84pub fn serialize_api_name<S>(api: &Api, serializer: S) -> Result<S::Ok, S::Error>
86where
87 S: serde::Serializer,
88{
89 serializer.serialize_str(&api.name())
90}