fyyd: mark live API validation done
Hit all four api.fyyd.de endpoints directly; every field the FyydApi DTOs read matches (data envelope, podcast id/title, /podcast/episodes as one object with title+episodes[], episode id/title/enclosure/duration/ podcast_id). No DTO change needed. A manual audio + W-capture smoke test on the running server stays open. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
3b81faeb9d
commit
0a0c35c531
|
|
@ -34,6 +34,7 @@ by dependency; each task names how it is verified.
|
|||
`cargo fmt --check` all clean; check off `quality/fyyd-provider.md`.
|
||||
- [x] **Docs**: architecture + quality + plan committed; user docs
|
||||
(`docs/src/`, README provider list) updated.
|
||||
- [ ] **Live validation** (deferred, needs network): confirm the real
|
||||
`api.fyyd.de` field shapes against `fyyd/src/api.rs` DTOs — see the
|
||||
open gate in `quality/fyyd-provider.md`.
|
||||
- [x] **Live validation**: confirmed the real `api.fyyd.de` field shapes
|
||||
against `fyyd/src/api.rs` DTOs (2026-07-23) — all four endpoints match,
|
||||
no DTO change needed. A manual audio/`W`-capture smoke test on the
|
||||
running server remains open in `quality/fyyd-provider.md`.
|
||||
|
|
|
|||
|
|
@ -988,11 +988,14 @@ Where the implementation shaped decisions beyond the plan:
|
|||
timeout-bounded and every listing capped (`search_results`,
|
||||
`hot_count`, `episodes_per_podcast`).
|
||||
|
||||
Deferred: **live validation** against the real `api.fyyd.de` (field
|
||||
names/envelope were taken from the current public docs, not exercised on
|
||||
the network). Left as an open gate in `quality/fyyd-provider.md` and a
|
||||
`- [ ]` in `plan/fyyd-provider.md`; if a field differs the fix is
|
||||
confined to the `FyydApi` DTOs.
|
||||
**Live validation done (2026-07-23).** All four `api.fyyd.de` endpoints
|
||||
were hit directly and match the `FyydApi` DTOs exactly (the `data`
|
||||
envelope; numeric podcast `id`+`title`; `/podcast/episodes` as a single
|
||||
object with `title`+`episodes[]`; episode `id`/`title`/`enclosure`/
|
||||
`duration`/`podcast_id`). No DTO change was needed. Remaining open: a
|
||||
manual audio-playthrough + `W`-capture smoke test on the running server
|
||||
(enclosures are plain media URLs, some via podtrac redirects, which both
|
||||
the resolve path and the capture reqwest client follow).
|
||||
|
||||
Verification: `fyyd` 10 tests + `crabidy-server` 74 lib + 4 integration
|
||||
green; clippy and rustfmt clean on both crates.
|
||||
|
|
|
|||
|
|
@ -61,11 +61,17 @@ in `fyyd/src/lib.rs` (provider logic against a fake `Fyyd`) and
|
|||
`get_lib_root` lists `fyyd` only when the client is mounted. No proto
|
||||
change and no new `ProviderCommand` were needed.
|
||||
|
||||
## Live validation (deferred, needs network)
|
||||
## Live validation
|
||||
|
||||
- [ ] Against the real `api.fyyd.de`: a search returns podcasts, a podcast
|
||||
lists episodes with non-empty `enclosure` URLs, and an enclosure plays
|
||||
through the audio player. If a field name differs from the documented
|
||||
shape, the fix is confined to `fyyd/src/api.rs` DTOs (design risk noted
|
||||
in the architecture doc). This gate cannot run in the offline unit
|
||||
suite.
|
||||
- [x] Validated against the real `api.fyyd.de` on 2026-07-23. All four
|
||||
endpoints match the `fyyd/src/api.rs` DTOs exactly: responses are
|
||||
wrapped in `data`; a podcast carries numeric `id` + `title`;
|
||||
`/podcast/episodes` returns a single object with `title` and an
|
||||
`episodes` array; each episode carries `id` (int), `title`,
|
||||
`enclosure` (a direct audio URL, e.g. an `.mp3`), `duration` (int
|
||||
seconds), and `podcast_id` (int); `/episode?episode_id=` returns one
|
||||
such object. No DTO change was needed.
|
||||
- [ ] End-to-end audio playthrough of an enclosure and a `W` capture to
|
||||
`/crabidy` still want a manual smoke test on the running server (the
|
||||
resolve path and the capture reqwest client both follow the enclosure,
|
||||
including podtrac/redirect URLs).
|
||||
|
|
|
|||
Loading…
Reference in New Issue