strawcore/Cargo.toml
Kayos 46201c731f Phase 1 — Foundation
Mirror NPE's dependency-free spine in Rust:

* exceptions   — NetworkError + ParsingError + ContentUnavailable
                 + ExtractionError tree, with reqwest/serde_json conversions
* localization — Localization + ContentCountry, default (en, GB)
* downloader/  — Downloader trait, Request builder, Response,
                 reqwest blocking default impl
* page         — continuation-token carrier
* image        — Image + ImageSet + ResolutionLevel
                 (HEIGHT_UNKNOWN/WIDTH_UNKNOWN = -1)
* metainfo     — title/content/url/url_text grab-bag
* service      — StreamingService trait + LinkType + ServiceInfo
* newpipe      — process-global Downloader / Localization /
                 ContentCountry singleton

Foundational invariants nailed down (per SPEC §3):
* HTTP non-2xx returns Ok(Response); only 429 throws NetworkError::Recaptcha
* Response header keys lowercase-normalized
* Request.add_header PARITY with NPE bug (silent overwrite);
  append_header is our clean addition
* default Localization is en-GB
* No cookie jar in the default downloader

Tests: 7 unit + 7 live smoke against httpbin.org (gated on
'online-tests' feature). All green.
2026-05-24 16:32:36 -07:00

40 lines
942 B
TOML

[package]
name = "strawcore"
version = "0.1.0"
edition = "2021"
license = "GPL-3.0-or-later"
authors = ["Sulkta-Coop"]
repository = "http://192.168.0.5:3001/Sulkta-Coop/strawcore"
description = "Rust port of NewPipeExtractor (YT-only). Plugs into Straw via UniFFI."
[lib]
crate-type = ["rlib", "cdylib", "staticlib"]
[dependencies]
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls-webpki-roots", "blocking", "gzip"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
thiserror = "1"
parking_lot = "0.12"
url = "2"
once_cell = "1"
[dev-dependencies]
serde_json = "1"
[features]
default = []
# `online-tests` gates network-dependent integration tests. Enable with
# `cargo test --features online-tests` once an internet route is available.
online-tests = []
[profile.release]
strip = true
lto = "thin"
codegen-units = 1
panic = "abort"
opt-level = "z"
[profile.dev]
opt-level = 0
debug = 1