mirror of
https://github.com/NexVeridian/ark-invest-api-rust.git
synced 2025-09-02 01:49:11 +00:00
update dependencies
This commit is contained in:
parent
95669ff2c9
commit
f2bc6ff33b
4 changed files with 879 additions and 559 deletions
1345
Cargo.lock
generated
1345
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
30
Cargo.toml
30
Cargo.toml
|
@ -4,24 +4,24 @@ version = "0.1.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
polars = { version = "0.35", features = [
|
polars = { version = "0.45", features = [
|
||||||
"lazy",
|
"lazy",
|
||||||
"strings",
|
"strings",
|
||||||
"parquet",
|
"parquet",
|
||||||
"round_series",
|
"round_series",
|
||||||
"serde",
|
"serde",
|
||||||
"json",
|
"json",
|
||||||
] }
|
] }
|
||||||
axum = "0.6"
|
axum = "0.7"
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
tokio = { version = "1.26", features = ["full"] }
|
tokio = { version = "1.42", features = ["full"] }
|
||||||
aide = { version = "0.12", features = ["redoc", "axum"] }
|
aide = { version = "0.13", features = ["redoc", "axum"] }
|
||||||
schemars = { version = "0.8", features = ["chrono"] }
|
schemars = { version = "0.8", features = ["chrono"] }
|
||||||
chrono = { version = "0.4", features = ["serde"] }
|
chrono = { version = "0.4", features = ["serde"] }
|
||||||
glob = { version = "0.3" }
|
glob = { version = "0.3" }
|
||||||
strum_macros = "0.25"
|
strum_macros = "0.26"
|
||||||
tower = { version = "0.4", features = ["limit", "buffer"] }
|
tower = { version = "0.5", features = ["limit", "buffer", "util"] }
|
||||||
tower-http = { version = "0.4", features = ["compression-zstd", "cors"] }
|
tower-http = { version = "0.6", features = ["compression-zstd", "cors"] }
|
||||||
tower_governor = "0.1"
|
tower_governor = "0.5"
|
||||||
lazy_static = "1.4"
|
lazy_static = "1.5"
|
||||||
|
|
30
flake.lock
generated
30
flake.lock
generated
|
@ -3,11 +3,11 @@
|
||||||
"advisory-db": {
|
"advisory-db": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1727881133,
|
"lastModified": 1733749954,
|
||||||
"narHash": "sha256-nnfwJjLA0uVIBgrGNYt9ButjBQFyj/I6MohQUHhJ78A=",
|
"narHash": "sha256-2Ug80Uf/oUujxgh02Iy5vTG0V+Ab9+YUHuRLRY0ayiY=",
|
||||||
"owner": "rustsec",
|
"owner": "rustsec",
|
||||||
"repo": "advisory-db",
|
"repo": "advisory-db",
|
||||||
"rev": "a68ca4a1ec3950da7c82c522e8cfc424e28ca7f0",
|
"rev": "ec9ce28714bb38d77a2223e7266df705500a7f11",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -18,11 +18,11 @@
|
||||||
},
|
},
|
||||||
"crane": {
|
"crane": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1727824512,
|
"lastModified": 1734324364,
|
||||||
"narHash": "sha256-DvFQd58W20BEqh0BUt33eZhzPKBXGO/r9aiSFIVMaWU=",
|
"narHash": "sha256-omYTR59TdH0AumP1cfh49fBnWZ52HjfdNfaLzCMZBx0=",
|
||||||
"owner": "ipetkov",
|
"owner": "ipetkov",
|
||||||
"repo": "crane",
|
"repo": "crane",
|
||||||
"rev": "a376dd1efac7bce448857c62961c6311be26cb09",
|
"rev": "60d7623f1320470bf2fdb92fd2dca1e9a27b98ce",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -39,11 +39,11 @@
|
||||||
"rust-analyzer-src": []
|
"rust-analyzer-src": []
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1727850840,
|
"lastModified": 1734417396,
|
||||||
"narHash": "sha256-i6lz63lPiRnInxCB19UGd2IkHo/SNE1kNq2M+jTRpLQ=",
|
"narHash": "sha256-32x1Z+Pz3Jv0cK9EG56cFTKXy/mZ/c+Ikxw+aVfKHp4=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "fenix",
|
"repo": "fenix",
|
||||||
"rev": "b85dddb88366113db4616a64925a8b2a23854f98",
|
"rev": "a18d41b26e998e95a598858fdb86ba22fb5da47d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -57,11 +57,11 @@
|
||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1726560853,
|
"lastModified": 1731533236,
|
||||||
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -72,11 +72,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1727811607,
|
"lastModified": 1734126203,
|
||||||
"narHash": "sha256-2ByOBflaIUJKeF9q6efVcYHljZXGZ7MnCWtseRvmpm8=",
|
"narHash": "sha256-0XovF7BYP50rTD2v4r55tR5MuBLet7q4xIz6Rgh3BBU=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "1839883cd0068572aed75fb9442b508bbd9ef09c",
|
"rev": "71a6392e367b08525ee710a93af2e80083b5b3e2",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
33
src/main.rs
33
src/main.rs
|
@ -13,7 +13,7 @@ use axum::{
|
||||||
BoxError, Extension, Json,
|
BoxError, Extension, Json,
|
||||||
};
|
};
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
use std::{env, net::SocketAddr, time::Duration};
|
use std::{env, net::SocketAddr, sync::Arc, time::Duration};
|
||||||
use tower::{buffer::BufferLayer, limit::RateLimitLayer, ServiceBuilder};
|
use tower::{buffer::BufferLayer, limit::RateLimitLayer, ServiceBuilder};
|
||||||
use tower_governor::{
|
use tower_governor::{
|
||||||
governor::GovernorConfigBuilder, key_extractor::SmartIpKeyExtractor, GovernorLayer,
|
governor::GovernorConfigBuilder, key_extractor::SmartIpKeyExtractor, GovernorLayer,
|
||||||
|
@ -67,7 +67,7 @@ async fn main() {
|
||||||
};
|
};
|
||||||
|
|
||||||
let rate_limit_ip = || {
|
let rate_limit_ip = || {
|
||||||
let config = Box::new(
|
let config = Arc::new(
|
||||||
GovernorConfigBuilder::default()
|
GovernorConfigBuilder::default()
|
||||||
.per_millisecond(500)
|
.per_millisecond(500)
|
||||||
.burst_size(25)
|
.burst_size(25)
|
||||||
|
@ -77,11 +77,7 @@ async fn main() {
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
);
|
);
|
||||||
|
|
||||||
ServiceBuilder::new()
|
ServiceBuilder::new().layer(GovernorLayer { config })
|
||||||
.layer(error_handler())
|
|
||||||
.layer(GovernorLayer {
|
|
||||||
config: Box::leak(config),
|
|
||||||
})
|
|
||||||
};
|
};
|
||||||
|
|
||||||
let cors = || {
|
let cors = || {
|
||||||
|
@ -124,8 +120,8 @@ async fn main() {
|
||||||
let mut api = OpenApi {
|
let mut api = OpenApi {
|
||||||
info: Info {
|
info: Info {
|
||||||
summary: Some(
|
summary: Some(
|
||||||
"A REST API for ARK Invest holdings data, writen in rust using [axum](https://github.com/tokio-rs/axum),
|
"A REST API for ARK Invest holdings data, writen in rust using [axum](https://github.com/tokio-rs/axum),
|
||||||
Redoc/Swagger through [Aide](https://github.com/tamasfe/aide),
|
Redoc/Swagger through [Aide](https://github.com/tamasfe/aide),
|
||||||
and parquet using [polars](https://github.com/pola-rs/polars)\n\nNot affiliated with Ark Invest
|
and parquet using [polars](https://github.com/pola-rs/polars)\n\nNot affiliated with Ark Invest
|
||||||
".to_owned(),
|
".to_owned(),
|
||||||
),
|
),
|
||||||
|
@ -139,13 +135,14 @@ async fn main() {
|
||||||
|
|
||||||
let addr = SocketAddr::from(([0, 0, 0, 0], 3000));
|
let addr = SocketAddr::from(([0, 0, 0, 0], 3000));
|
||||||
println!("listening on {}", addr);
|
println!("listening on {}", addr);
|
||||||
axum::Server::bind(&addr)
|
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
|
||||||
.serve(
|
axum::serve(
|
||||||
app.finish_api(&mut api)
|
listener,
|
||||||
.layer(Extension(api))
|
app.finish_api(&mut api)
|
||||||
.layer(CompressionLayer::new().zstd(true))
|
.layer(Extension(api))
|
||||||
.into_make_service(),
|
.layer(CompressionLayer::new().zstd(true))
|
||||||
)
|
.into_make_service(),
|
||||||
.await
|
)
|
||||||
.unwrap();
|
.await
|
||||||
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue