Background
internal/source/curseforge/client.go (GetMods at ~L180) currently fans out per-mod GET /v1/mods/{id} calls when asked for multiple mods. CurseForge exposes a batch POST /v1/mods that takes a JSON body of IDs and returns them in one round trip — much faster on update checks and dependency resolution where we routinely fetch dozens of mods.
Suggested approach
Replace the per-id loop in GetMods with a single POST /v1/mods containing { "modIds": [...] }. Keep GetMod(single) as the public single-id helper. Plumb through the same httpclient.Client plumbing used elsewhere — this needs the JSON body and POST method, so either extend httpclient.DoJSON to accept a body or add a DoJSONBody variant.
Originally tracked as a TODO in internal/source/curseforge/client.go; converted to an issue as part of the Phase 6 cleanup pass.
Background
internal/source/curseforge/client.go(GetModsat ~L180) currently fans out per-modGET /v1/mods/{id}calls when asked for multiple mods. CurseForge exposes a batchPOST /v1/modsthat takes a JSON body of IDs and returns them in one round trip — much faster on update checks and dependency resolution where we routinely fetch dozens of mods.Suggested approach
Replace the per-id loop in
GetModswith a singlePOST /v1/modscontaining{ "modIds": [...] }. KeepGetMod(single)as the public single-id helper. Plumb through the samehttpclient.Clientplumbing used elsewhere — this needs the JSON body and POST method, so either extendhttpclient.DoJSONto accept a body or add aDoJSONBodyvariant.Originally tracked as a
TODOininternal/source/curseforge/client.go; converted to an issue as part of the Phase 6 cleanup pass.