2.5 KiB
2.5 KiB
Plan — fyyd podcast provider
From architecture/fyyd-provider.md and quality/fyyd-provider.md. Ordered
by dependency; each task names how it is verified.
- HTTP seam (
fyyd/src/api.rs):Fyydtrait (search_podcasts,hot_podcasts,podcast_episodes,episode), domainPodcast/Episode, typedFetchError, and thereqwestFyydApi(envelope unwrap, defensive DTOs, per-call timeout, artist backfill via a/podcastlookup). Verify: it compiles; used by the provider tests via a fake. - Crate skeleton (
fyyd/Cargo.toml, workspacemembers+ dep): newfyydcrate depending oncrabidy-core,reqwest,serde,thiserror,tokio,toml,tracing,async-trait. Verify:cargo build -p fyyd. - Path model (
fyyd/src/lib.rs):FyydPathenum +parse_pathcovering root/search/term/podcast/episode and hot/podcast/episode; empty segments rejected. Verify:foreign_and_malformed_paths_are_rejected. - Provider core (
fyyd/src/lib.rs):Client(Box<dyn Fyyd>+ settings + in-memory search terms),Settings(fyyd.toml), theProviderClientimpl (root, node dispatch, podcast/episode builders, stream + metadata resolution, create/rename/delete of terms, central download blessing). Verify: the 10 unit tests infyyd/src/lib.rs. - Settings registration (
crabidy-server/src/settings.rs): addfyydtoALL_PROVIDERS,ProviderToggles,all(), andprovider_toggles(). Verify: existing settings tests (they iterateALL_PROVIDERS);cargo test -p crabidy-server. - Orchestrator wiring (
crabidy-server/src/provider.rs):fyyd_clientfield,fyyd_owns/fyyd_provider, non-fatalbuild()block readingfyyd.toml,get_lib_rootchild, and a routing arm in each of the eightProviderClientmethods. Verify:cargo build, full server suite green. - Gates:
cargo test -p fyyd -p crabidy-server,cargo clippy,cargo fmt --checkall clean; check offquality/fyyd-provider.md. - Docs: architecture + quality + plan committed; user docs
(
docs/src/, README provider list) updated. - Live validation: confirmed the real
api.fyyd.defield shapes againstfyyd/src/api.rsDTOs (2026-07-23) — all four endpoints match, no DTO change needed. A manual audio/W-capture smoke test on the running server remains open inquality/fyyd-provider.md.