go-client/streaming.go
Deivid Soto f6f24c2c3f
Some checks failed
CI / Test (push) Failing after 1s
CI / Test-1 (push) Failing after 1s
CI / Test-2 (push) Failing after 1s
CI / Lint (push) Failing after 1s
CI / Vet (push) Failing after 1s
feat: implement TorrentClaw Go API client v0.1.0
2026-03-28 11:28:48 +01:00

56 lines
1.9 KiB
Go

package torrentclaw
import (
"context"
"net/url"
)
// StreamingTopParams holds the parameters for a streaming top 10 request.
type StreamingTopParams struct {
// Service is the streaming service: "netflix", "prime", "disney", "hbo", "apple".
Service string
// Country is an ISO 3166-1 country code (default "US").
Country string
// ShowType is the content type: "movie" or "series" (default "movie").
ShowType string
// Locale sets the language for localized titles.
Locale string
}
// StreamingTopItem represents a ranked item in a streaming top list.
type StreamingTopItem struct {
Rank int `json:"rank"`
Title string `json:"title"`
IMDbID *string `json:"imdbId,omitempty"`
TMDbID *int `json:"tmdbId,omitempty"`
ContentType *string `json:"contentType,omitempty"`
Year *int `json:"year,omitempty"`
Overview *string `json:"overview,omitempty"`
Rating *string `json:"rating,omitempty"`
PosterURL *string `json:"posterUrl,omitempty"`
BackdropURL *string `json:"backdropUrl,omitempty"`
Genres []string `json:"genres,omitempty"`
StreamingLink *string `json:"streamingLink,omitempty"`
ContentID *int `json:"contentId,omitempty"`
HasTorrents bool `json:"hasTorrents"`
MaxSeeders int `json:"maxSeeders"`
}
// StreamingTop returns the top-ranked content for a streaming service.
// The response is an array of ranked items (not a paginated wrapper).
func (c *Client) StreamingTop(ctx context.Context, params StreamingTopParams) ([]StreamingTopItem, error) {
q := url.Values{}
addStringParam(q, "service", params.Service)
addStringParam(q, "country", params.Country)
addStringParam(q, "show_type", params.ShowType)
addStringParam(q, "locale", params.Locale)
var resp []StreamingTopItem
if err := c.doJSON(ctx, "/api/v1/streaming-top", q, &resp); err != nil {
return nil, err
}
return resp, nil
}