pub mod base;
pub mod netease;
pub mod sina;
pub mod tencent;
pub mod transforms;
pub mod xueqiu;
use anyhow::Result;
use reqwest::header::{HeaderMap, HeaderValue, USER_AGENT};
#[derive(Clone)]
pub struct Stocks {
pub base: base::BaseApi,
pub sina: sina::SinaApi,
pub xueqiu: xueqiu::XueqiuApi,
pub netease: netease::NeteaseApi,
pub tencent: tencent::TencentApi,
}
impl Stocks {
pub fn new() -> Result<Self> {
let mut headers = HeaderMap::new();
headers.insert(
USER_AGENT,
HeaderValue::from_static(
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36",
),
);
let client = reqwest::Client::builder().default_headers(headers).build()?;
Ok(Self {
base: base::BaseApi,
sina: sina::SinaApi::new(client.clone()),
xueqiu: xueqiu::XueqiuApi::new(client.clone()),
netease: netease::NeteaseApi::new(client.clone()),
tencent: tencent::TencentApi::new(client),
})
}
}
impl Default for Stocks {
fn default() -> Self {
Self::new().expect("failed to build HTTP client")
}
}