Skip to content

fix(arr): return [] on empty body; cache EventNameMap inverse#4

Merged
detain merged 1 commit into
masterfrom
fix/arr-empty-body-and-eventnamemap-cache
May 23, 2026
Merged

fix(arr): return [] on empty body; cache EventNameMap inverse#4
detain merged 1 commit into
masterfrom
fix/arr-empty-body-and-eventnamemap-cache

Conversation

@detain
Copy link
Copy Markdown
Owner

@detain detain commented May 23, 2026

Summary

  • Arr\{Bazarr,Prowlarr,Radarr,Sonarr}Client::get() now returns [] for empty HTTP response bodies (matches existing post/put/delete behaviour). *arr APIs return 200 + empty body for collection endpoints with no rows; this broke CustomFormatSyncer and similar consumers.
  • EventNameMap::toAlias() caches the inverted alias map instead of array_flip-ing on every call.

Test plan

  • ./vendor/bin/phpunit — 164 tests, 343 assertions, all green
  • ./vendor/bin/phpstan analyze — no errors on changed files
  • ./vendor/bin/phpcs --standard=PSR12 — clean

Arr\{Bazarr,Prowlarr,Radarr,Sonarr}Client::get() now returns [] for empty
HTTP response bodies instead of throwing 'Invalid JSON response'. *arr
APIs legitimately return 200 OK with empty body for collection endpoints
when no rows exist (e.g. /api/v3/customformat on a fresh Radarr), which
broke every consumer of get()-based methods including CustomFormatSyncer.
post()/put()/delete() already had this guard; get() was the outlier.

EventNameMap::toAlias() now caches the inverted alias map in a private
static property instead of calling array_flip() on every invocation.
Behaviour unchanged; matters in tight-loop doc generators and debug
serialisers.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@detain detain merged commit 7b6fb1e into master May 23, 2026
5 of 7 checks passed
@detain detain deleted the fix/arr-empty-body-and-eventnamemap-cache branch May 23, 2026 00:28
@codacy-production
Copy link
Copy Markdown

Not up to standards ⛔

🔴 Issues 3 minor

Alerts:
⚠ 3 issues (≤ 0 issues of at least minor severity)

Results:
3 new issues

Category Results
CodeStyle 3 minor

View in Codacy

🟢 Metrics 0 complexity · 8 duplication

Metric Results
Complexity 0
Duplication 8

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant