10 个版本 (5 个破坏性更新)
0.6.0 | 2023年3月6日 |
---|---|
0.5.0 | 2022年12月30日 |
0.4.0 | 2021年3月13日 |
0.3.0 | 2021年3月8日 |
0.1.4 | 2021年1月2日 |
#161 in 金融
每月 26 次下载
125KB
3.5K SLoC
Rust etrade
封装了 etrade API 并实现了所需的 oauth1 流程。
状态存储
该软件包的默认功能包括一个线程安全的内存存储用于 oauth 令牌。有一个可选功能 keychain
,它将使用操作系统本地的密钥存储来跟踪令牌信息。
您只需要初始化一次消费者密钥/密钥,临时凭证将由会话管理。
用法
use anyhow::{anyhow, Result};
use etrade::orders::{ListOrdersRequest, OrderStatus, TransactionType};
use etrade::KeychainStore;
use etrade::{self, SortOrder};
use etrade::{accounts, MarketSession, SecurityType};
use accounts::BalanceRequest;
#[tokio::main]
async fn main() -> Result<()> {
let mode: etrade::Mode = etrade::Mode::Live;
let session = Arc::new(etrade::Session::new(mode, KeychainStore));
let accounts = etrade::accounts::Api::new(session.clone());
let msg1 = "Consumer key:\n";
io::stderr().write_all(msg1.as_bytes()).await?;
let mut consumer_token = String::new();
io::BufReader::new(io::stdin()).read_line(&mut consumer_token).await?;
let msg2 = "Consumer secret:\n";
io::stderr().write_all(msg2.as_bytes()).await?;
let mut consumer_secret = String::new();
io::BufReader::new(io::stdin()).read_line(&mut consumer_secret).await?;
session
.initialize(consumer_token.trim().to_string(), consumer_secret.trim().to_string())
.await?;
println!("updated the {} consumer token and key", mode);
let account_list = accounts.list(etrade::OOB).await?;
for account in &account_list {
let balance = accounts
.balance(
&account.account_id_key,
BalanceRequest::default(),
etrade::OOB,
)
.await?;
println!("{:?}", balance);
}
Ok(())
}
依赖项
~40–55MB
~610K SLoC