Files
goyomi/internal/httpclient/headers.go
T
achmad 85d2ea6143 feat: initial Phase 1 implementation — core framework + Docker
- Data types (SManga, SChapter, Page, MangasPage, all Filter variants)
- Source interfaces (Source, CatalogueSource) with MD5-based ID generation matching Tachiyomi/Suwayomi
- HTTP client with per-host rate limiting, cookie jar, and 429 retry
- FlareSolverr v1 client (FLARESOLVERR_URL env)
- Generic GraphQL POST helper
- goquery HTML parser wrappers
- Source registry (panics on duplicate ID)
- Multi-stage Dockerfile (golang:1.26-alpine + distroless) and compose.yml (postgres, flaresolverr, app)
2026-05-10 21:24:38 +07:00

43 lines
1.1 KiB
Go

package httpclient
const (
androidUA = "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Mobile Safari/537.36"
desktopUA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
)
func AndroidUA() string { return androidUA }
func DesktopUA() string { return desktopUA }
func JSONHeaders() map[string]string {
return map[string]string{
"Content-Type": "application/json",
"Accept": "application/json",
}
}
func FormHeaders() map[string]string {
return map[string]string{
"Content-Type": "application/x-www-form-urlencoded",
}
}
func WithRefererHeader(headers map[string]string, referer string) map[string]string {
out := clone(headers)
out["Referer"] = referer
return out
}
func WithOrigin(headers map[string]string, origin string) map[string]string {
out := clone(headers)
out["Origin"] = origin
return out
}
func clone(m map[string]string) map[string]string {
out := make(map[string]string, len(m)+1)
for k, v := range m {
out[k] = v
}
return out
}