stock-rust 0.1.0

Rust version of stock-api
Documentation
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")
    }
}