feat: implement TorrentClaw Go API client v0.1.0
This commit is contained in:
commit
f6f24c2c3f
39 changed files with 5067 additions and 0 deletions
60
trending.go
Normal file
60
trending.go
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
package torrentclaw
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
// TrendingParams holds the parameters for a trending content request.
|
||||
type TrendingParams struct {
|
||||
// Period sets the time window: "daily", "weekly", "monthly" (default "daily").
|
||||
Period string
|
||||
|
||||
// Limit sets the number of items (1-50, default 20).
|
||||
Limit int
|
||||
|
||||
// Page is the page number (starts at 1).
|
||||
Page int
|
||||
|
||||
// Locale sets the language for localized titles.
|
||||
Locale string
|
||||
}
|
||||
|
||||
// TrendingItem represents a trending content item.
|
||||
type TrendingItem struct {
|
||||
ID int `json:"id"`
|
||||
Title string `json:"title"`
|
||||
Year *int `json:"year,omitempty"`
|
||||
ContentType string `json:"contentType"`
|
||||
PosterURL *string `json:"posterUrl,omitempty"`
|
||||
RatingIMDb *string `json:"ratingImdb,omitempty"`
|
||||
RatingTMDb *string `json:"ratingTmdb,omitempty"`
|
||||
Overview *string `json:"overview,omitempty"`
|
||||
MaxSeeders int `json:"maxSeeders"`
|
||||
ClickCount int `json:"clickCount"`
|
||||
TrendScore int `json:"trendScore"`
|
||||
}
|
||||
|
||||
// TrendingResponse is the paginated response from the trending endpoint.
|
||||
type TrendingResponse struct {
|
||||
Period string `json:"period"`
|
||||
Items []TrendingItem `json:"items"`
|
||||
Total int `json:"total"`
|
||||
Page int `json:"page"`
|
||||
PageSize int `json:"pageSize"`
|
||||
}
|
||||
|
||||
// Trending returns trending content for the given time period.
|
||||
func (c *Client) Trending(ctx context.Context, params TrendingParams) (*TrendingResponse, error) {
|
||||
q := url.Values{}
|
||||
addStringParam(q, "period", params.Period)
|
||||
addIntParam(q, "limit", params.Limit)
|
||||
addIntParam(q, "page", params.Page)
|
||||
addStringParam(q, "locale", params.Locale)
|
||||
|
||||
var resp TrendingResponse
|
||||
if err := c.doJSON(ctx, "/api/v1/trending", q, &resp); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue