Skip to content

HTTP response handling boilerplate duplicated across fetchers #22

Description

@calmcacil

Description

Every API fetcher in the codebase repeats the same pattern: create request, set headers, Do(), check status, read body, decode JSON/XML, return error/result. This creates significant code duplication and inconsistency in error handling.

Affected Functions

  • fetchPlexStreams, fetchJellyfinStreams (streams)
  • fetchSonarrCalendar, fetchRadarrCalendar, fetchQueue (calendar)
  • searchMedia, getTVDetails, createRequest, getPendingRequests, approveRequest, declineRequest, fetchServiceInstances, fetchServiceDetails, checkUserPermissions, getRequestCount (requests)
  • fetchSonarrHistory, fetchRadarrHistory (feed)

Proposed Fix

Add shared helper functions to internal/http/client.go:

  • DoJSON(method, url, headers, &result) error
  • DoXML(method, url, headers, &result) error
  • Or similar patterns to reduce ~15 lines of boilerplate per function to ~3

Priority

Medium — reduces ~200 lines of code, improves consistency and maintainability.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions