mirror of
https://github.com/0xrsydn/idx-cli.git
synced 2026-11-07 01:35:36 +00:00
Six rounds of the 0.4.0 review found crafted markup that the hand-written reader read differently from HTML (cells in comments or attributes, stray or spaced tags, a decoy date attribute or total, foreign content). Parse the page with scraper (html5ever) instead: dates are the inputs' values, rows are the single tbody's tr children with nine td each, totals are the tfoot spans, all as a browser builds them. Rows that don't line up still reject the page. scraper's CSS crates (selectors, cssparser) are MPL-2.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V3syn2fN2LNo5pvTSqc6eh
37 lines
1.2 KiB
TOML
37 lines
1.2 KiB
TOML
[package]
|
|
name = "idx-core"
|
|
description = "Data layer for Indonesian stock market (IDX) market, financial, and ownership data"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
homepage.workspace = true
|
|
readme = "../../README.md"
|
|
keywords = ["idx", "stocks", "indonesia", "finance"]
|
|
categories = ["finance"]
|
|
include = ["/Cargo.toml", "/LICENSE", "/src/**", "/tests/fixtures/**"]
|
|
|
|
[features]
|
|
default = ["ownership"]
|
|
ownership = ["dep:rusqlite", "dep:quick-xml", "dep:sha2", "dep:zip"]
|
|
# Derives clap::ValueEnum on enums frontends expose as CLI arguments.
|
|
clap = ["dep:clap"]
|
|
# Fixture-backed mock provider (IDX_USE_MOCK_PROVIDER) for tests only.
|
|
testing = []
|
|
|
|
[dependencies]
|
|
clap = { workspace = true, optional = true }
|
|
ureq.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
toml.workspace = true
|
|
directories = "5"
|
|
chrono.workspace = true
|
|
thiserror = "2"
|
|
fastrand = "2"
|
|
rusqlite = { workspace = true, optional = true }
|
|
quick-xml = { version = "0.37", optional = true }
|
|
sha2 = { workspace = true, optional = true }
|
|
zip = { workspace = true, optional = true }
|
|
scraper = { version = "0.27", default-features = false }
|