From a8e650e4d7cadb519b73890a8644e1f6a491a3fb Mon Sep 17 00:00:00 2001 From: nite Date: Sun, 6 Apr 2025 03:24:50 +1000 Subject: [PATCH] u --- README.md | 23 +- client.go | 76 +-- endpoint/age_rating_categories.go | 14 +- endpoint/age_rating_content_descriptions.go | 14 +- .../age_rating_content_descriptions_v2.go | 14 +- endpoint/age_rating_organizations.go | 16 +- endpoint/age_ratings.go | 16 +- endpoint/alternative_names.go | 16 +- endpoint/artworks.go | 16 +- endpoint/base.go | 68 ++- endpoint/character_genders.go | 16 +- endpoint/character_mug_shots.go | 16 +- endpoint/character_species.go | 16 +- endpoint/characters.go | 16 +- endpoint/collection_membership_types.go | 16 +- endpoint/collection_memberships.go | 16 +- endpoint/collection_relation_types.go | 16 +- endpoint/collection_relations.go | 16 +- endpoint/collection_types.go | 16 +- endpoint/collections.go | 16 +- endpoint/companies.go | 16 +- endpoint/company_logos.go | 16 +- endpoint/company_statuses.go | 16 +- endpoint/company_websites.go | 16 +- endpoint/covers.go | 16 +- endpoint/date_formats.go | 16 +- endpoint/event_logos.go | 16 +- endpoint/event_networks.go | 16 +- endpoint/events.go | 16 +- endpoint/external_game_sources.go | 16 +- endpoint/external_games.go | 16 +- endpoint/franchises.go | 16 +- endpoint/game_engine_logos.go | 16 +- endpoint/game_engines.go | 16 +- endpoint/game_localizations.go | 16 +- endpoint/game_modes.go | 16 +- endpoint/game_release_formats.go | 16 +- endpoint/game_statuses.go | 16 +- endpoint/game_time_to_beats.go | 16 +- endpoint/game_types.go | 16 +- endpoint/game_version_feature_values.go | 16 +- endpoint/game_version_features.go | 16 +- endpoint/game_versions.go | 16 +- endpoint/game_videos.go | 16 +- endpoint/games.go | 16 +- endpoint/genres.go | 16 +- endpoint/involved_companies.go | 16 +- endpoint/keywords.go | 16 +- endpoint/language_support_types.go | 16 +- endpoint/language_supports.go | 16 +- endpoint/languages.go | 16 +- endpoint/multiplayer_modes.go | 16 +- endpoint/network_types.go | 16 +- endpoint/platform_families.go | 16 +- endpoint/platform_logos.go | 16 +- endpoint/platform_types.go | 16 +- endpoint/platform_version_companies.go | 16 +- endpoint/platform_version_release_dates.go | 16 +- endpoint/platform_versions.go | 16 +- endpoint/platform_websites.go | 16 +- endpoint/platforms.go | 16 +- endpoint/player_perspectives.go | 16 +- endpoint/popularity_primitives.go | 16 +- endpoint/popularity_types.go | 16 +- endpoint/regions.go | 16 +- endpoint/release_date_regions.go | 16 +- endpoint/release_date_statuses.go | 16 +- endpoint/release_dates.go | 16 +- endpoint/screenshots.go | 16 +- endpoint/search.go | 9 +- endpoint/themes.go | 16 +- endpoint/webhooks.go | 12 +- endpoint/website_types.go | 16 +- endpoint/websites.go | 16 +- register_endpoints.go | 497 +++++------------- 75 files changed, 1250 insertions(+), 533 deletions(-) diff --git a/README.md b/README.md index 8bee46f..cdb9746 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ import ( ) func Test1(c *igdb.Client) { - game, err := igdb.GetItemByID(1942, c.Games.Query) + game, err := c.Games.GetByID(1942) if err != nil { log.Fatal(err) } @@ -37,7 +37,7 @@ func Test1(c *igdb.Client) { } func Test2(c *igdb.Client) { - games, err := igdb.GetItemsByIDs([]uint64{119171, 119133}, c.Games.Query) + games, err := c.Games.GetByIDs([]uint64{119171, 119133}) if err != nil { log.Fatal(err) } @@ -45,7 +45,7 @@ func Test2(c *igdb.Client) { } func Test3(c *igdb.Client) { - total, err := igdb.GetItemsLength(c.Games.Query) + total, err := c.Games.GetLastOneId() if err != nil { log.Fatal(err) } @@ -53,7 +53,7 @@ func Test3(c *igdb.Client) { } func Test4(c *igdb.Client) { - games, err := igdb.GetItemsPagniated(0, 10, c.Games.Query) + games, err := c.Games.Paginated(0, 10) if err != nil { log.Fatal(err) } @@ -93,21 +93,6 @@ func main() { } ``` -## Advanced Usage - -### Using with FlareSolverr - -```go -import "github.com/bestnite/go-flaresolverr" - -flaresolverr := flaresolverr.New("http://localhost:8191") -client := igdb.NewWithFlaresolverr("your-client-id", "your-client-secret", flaresolverr) -``` - -### Rate Limiting - -The client automatically handles rate limiting with a default of 4 requests per second. This helps prevent hitting IGDB's rate limits. - ## Contributing Contributions are welcome! Please feel free to submit a Pull Request. diff --git a/client.go b/client.go index aa5ca0a..e56e294 100644 --- a/client.go +++ b/client.go @@ -2,7 +2,6 @@ package igdb import ( "fmt" - "strings" "github.com/bestnite/go-flaresolverr" "github.com/bestnite/go-igdb/endpoint" @@ -16,8 +15,6 @@ type Client struct { flaresolverr *flaresolverr.Flaresolverr limiter *rateLimiter - EntityEndpoints map[endpoint.EndpointName]endpoint.EntityEndpoint - AgeRatingCategories *endpoint.AgeRatingCategories AgeRatingContentDescriptions *endpoint.AgeRatingContentDescriptions AgeRatingContentDescriptionsV2 *endpoint.AgeRatingContentDescriptionsV2 @@ -93,11 +90,10 @@ type Client struct { func New(clientID, clientSecret string) *Client { c := &Client{ - clientID: clientID, - limiter: newRateLimiter(4), - token: NewTwitchToken(clientID, clientSecret), - flaresolverr: nil, - EntityEndpoints: make(map[endpoint.EndpointName]endpoint.EntityEndpoint), + clientID: clientID, + limiter: newRateLimiter(4), + token: NewTwitchToken(clientID, clientSecret), + flaresolverr: nil, } registerAllEndpoints(c) @@ -131,67 +127,3 @@ func (g *Client) Request(URL string, dataBody any) (*resty.Response, error) { } return resp, nil } - -func GetItemsPagniated[T any](offset, limit int, f func(string) ([]*T, error)) ([]*T, error) { - query := fmt.Sprintf("offset %d; limit %d; f *; sort id asc;", offset, limit) - items, err := f(query) - if err != nil { - return nil, err - } - - return items, nil -} - -func GetItemsLength[T any](f func(string) ([]*T, error)) (uint64, error) { - query := "fields id; sort id desc; limit 1;" - items, err := f(query) - if err != nil { - return 0, err - } - - if len(items) == 0 { - return 0, fmt.Errorf("no results: %s", query) - } - - type Iid interface { - GetId() uint64 - } - - item, ok := any(items[0]).(Iid) - - if !ok { - return 0, fmt.Errorf("failed to convert") - } - - return item.GetId(), nil -} - -func GetItemByID[T any](id uint64, f func(string) ([]*T, error)) (*T, error) { - query := fmt.Sprintf("where id = %d; fields *;", id) - items, err := f(query) - if err != nil { - return nil, err - } - - if len(items) == 0 { - return nil, fmt.Errorf("no results: %s", query) - } - - return items[0], nil -} - -func GetItemsByIDs[T any](ids []uint64, f func(string) ([]*T, error)) ([]*T, error) { - idStrSlice := make([]string, len(ids)) - for i, id := range ids { - idStrSlice[i] = fmt.Sprintf("%d", id) - } - - idStr := fmt.Sprintf(`where id = (%s); fields *;`, strings.Join(idStrSlice, ",")) - - items, err := f(idStr) - if err != nil { - return nil, err - } - - return items, nil -} diff --git a/endpoint/age_rating_categories.go b/endpoint/age_rating_categories.go index 106a375..ac8c47a 100644 --- a/endpoint/age_rating_categories.go +++ b/endpoint/age_rating_categories.go @@ -4,12 +4,24 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) type AgeRatingCategories struct { - BaseEndpoint + BaseEndpoint[pb.AgeRatingCategory] +} + +func NewAgeRatingCategories(request func(URL string, dataBody any) (*resty.Response, error)) *AgeRatingCategories { + a := &AgeRatingCategories{ + BaseEndpoint: BaseEndpoint[pb.AgeRatingCategory]{ + endpointName: EPAgeRatingCategories, + request: request, + }, + } + a.queryFunc = a.Query + return a } func (a *AgeRatingCategories) Query(query string) ([]*pb.AgeRatingCategory, error) { diff --git a/endpoint/age_rating_content_descriptions.go b/endpoint/age_rating_content_descriptions.go index 8db43b4..d9dfddd 100644 --- a/endpoint/age_rating_content_descriptions.go +++ b/endpoint/age_rating_content_descriptions.go @@ -4,12 +4,24 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) type AgeRatingContentDescriptions struct { - BaseEndpoint + BaseEndpoint[pb.AgeRatingContentDescription] +} + +func NewAgeRatingContentDescriptions(request func(URL string, dataBody any) (*resty.Response, error)) *AgeRatingContentDescriptions { + a := &AgeRatingContentDescriptions{ + BaseEndpoint[pb.AgeRatingContentDescription]{ + endpointName: EPAgeRatingContentDescriptions, + request: request, + }, + } + a.queryFunc = a.Query + return a } func (a *AgeRatingContentDescriptions) Query(query string) ([]*pb.AgeRatingContentDescription, error) { diff --git a/endpoint/age_rating_content_descriptions_v2.go b/endpoint/age_rating_content_descriptions_v2.go index 033e5dc..e1cb14d 100644 --- a/endpoint/age_rating_content_descriptions_v2.go +++ b/endpoint/age_rating_content_descriptions_v2.go @@ -4,12 +4,24 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) type AgeRatingContentDescriptionsV2 struct { - BaseEndpoint + BaseEndpoint[pb.AgeRatingContentDescriptionV2] +} + +func NewAgeRatingContentDescriptionsV2(request func(URL string, dataBody any) (*resty.Response, error)) *AgeRatingContentDescriptionsV2 { + a := &AgeRatingContentDescriptionsV2{ + BaseEndpoint[pb.AgeRatingContentDescriptionV2]{ + endpointName: EPAgeRatingContentDescriptionsV2, + request: request, + }, + } + a.queryFunc = a.Query + return a } func (a *AgeRatingContentDescriptionsV2) Query(query string) ([]*pb.AgeRatingContentDescriptionV2, error) { diff --git a/endpoint/age_rating_organizations.go b/endpoint/age_rating_organizations.go index 7a72f83..de4b6db 100644 --- a/endpoint/age_rating_organizations.go +++ b/endpoint/age_rating_organizations.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type AgeRatingOrganizations struct{ BaseEndpoint } +type AgeRatingOrganizations struct { + BaseEndpoint[pb.AgeRatingOrganization] +} + +func NewAgeRatingOrganizations(request func(URL string, dataBody any) (*resty.Response, error)) *AgeRatingOrganizations { + a := &AgeRatingOrganizations{ + BaseEndpoint[pb.AgeRatingOrganization]{ + endpointName: EPAgeRatingOrganizations, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *AgeRatingOrganizations) Query(query string) ([]*pb.AgeRatingOrganization, error) { resp, err := a.request("https://api.igdb.com/v4/age_rating_organizations.pb", query) diff --git a/endpoint/age_ratings.go b/endpoint/age_ratings.go index f840085..32a426c 100644 --- a/endpoint/age_ratings.go +++ b/endpoint/age_ratings.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type AgeRatings struct{ BaseEndpoint } +type AgeRatings struct { + BaseEndpoint[pb.AgeRating] +} + +func NewAgeRatings(request func(URL string, dataBody any) (*resty.Response, error)) *AgeRatings { + a := &AgeRatings{ + BaseEndpoint[pb.AgeRating]{ + endpointName: EPAgeRatings, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *AgeRatings) Query(query string) ([]*pb.AgeRating, error) { resp, err := a.request("https://api.igdb.com/v4/age_ratings.pb", query) diff --git a/endpoint/alternative_names.go b/endpoint/alternative_names.go index c005110..d574261 100644 --- a/endpoint/alternative_names.go +++ b/endpoint/alternative_names.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type AlternativeNames struct{ BaseEndpoint } +type AlternativeNames struct { + BaseEndpoint[pb.AlternativeName] +} + +func NewAlternativeNames(request func(URL string, dataBody any) (*resty.Response, error)) *AlternativeNames { + a := &AlternativeNames{ + BaseEndpoint[pb.AlternativeName]{ + endpointName: EPAlternativeNames, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *AlternativeNames) Query(query string) ([]*pb.AlternativeName, error) { resp, err := a.request("https://api.igdb.com/v4/alternative_names.pb", query) diff --git a/endpoint/artworks.go b/endpoint/artworks.go index 23361c8..814ce40 100644 --- a/endpoint/artworks.go +++ b/endpoint/artworks.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type Artworks struct{ BaseEndpoint } +type Artworks struct { + BaseEndpoint[pb.Artwork] +} + +func NewArtworks(request func(URL string, dataBody any) (*resty.Response, error)) *Artworks { + a := &Artworks{ + BaseEndpoint[pb.Artwork]{ + endpointName: EPArtworks, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *Artworks) Query(query string) ([]*pb.Artwork, error) { resp, err := a.request("https://api.igdb.com/v4/artworks.pb", query) diff --git a/endpoint/base.go b/endpoint/base.go index 86bf58e..16b90a5 100644 --- a/endpoint/base.go +++ b/endpoint/base.go @@ -1,38 +1,70 @@ package endpoint import ( + "fmt" + "strconv" + "strings" + "github.com/go-resty/resty/v2" ) -type BaseEndpoint struct { +type BaseEndpoint[T any] struct { request func(URL string, dataBody any) (*resty.Response, error) endpointName EndpointName + queryFunc func(string) ([]*T, error) } -func NewBaseEndpoint(request func(URL string, dataBody any) (*resty.Response, error), endpointName EndpointName) *BaseEndpoint { - return &BaseEndpoint{ - request: request, - endpointName: endpointName, - } -} - -func (b *BaseEndpoint) GetEndpointName() EndpointName { +func (b *BaseEndpoint[T]) GetEndpointName() EndpointName { return b.endpointName } -func (b *BaseEndpoint) Query(query string) (any, error) { - return nil, nil +func (b *BaseEndpoint[T]) Query(query string) ([]*T, error) { + if b.queryFunc == nil { + return nil, fmt.Errorf("Query method must be implemented by specific endpoint") + } + return b.queryFunc(query) } -func (b *BaseEndpoint) QueryAny(query string) (any, error) { - return b.Query(query) +func (b *BaseEndpoint[T]) GetByID(id uint64) (*T, error) { + res, err := b.Query(fmt.Sprintf("where id = %d; fields *;", id)) + if err != nil { + return nil, err + } + if len(res) == 0 { + return nil, fmt.Errorf("no results") + } + return res[0], nil } -type Endpoint interface { - GetEndpointName() EndpointName +func (b *BaseEndpoint[T]) GetByIDs(ids []uint64) ([]*T, error) { + builder := strings.Builder{} + for i, v := range ids { + if i > 0 { + builder.WriteByte(',') + } + builder.WriteString(strconv.FormatUint(v, 10)) + } + return b.Query(fmt.Sprintf("where id = (%s); fields *;", builder.String())) } -type EntityEndpoint interface { - QueryAny(query string) (any, error) - GetEndpointName() EndpointName +func (b *BaseEndpoint[T]) GetLastOneId() (uint64, error) { + res, err := b.Query("fields *; sort id desc; limit 1;") + if err != nil { + return 0, err + } + if len(res) == 0 { + return 0, fmt.Errorf("no results") + } + type IdGetter interface { + GetId() uint64 + } + item, ok := any(res[0]).(IdGetter) + if !ok { + return 0, fmt.Errorf("invalid type") + } + return item.GetId(), nil +} + +func (b *BaseEndpoint[T]) Paginated(offset, limit uint64) ([]*T, error) { + return b.Query(fmt.Sprintf("offset %d; limit %d; fields *; sort id asc;", offset, limit)) } diff --git a/endpoint/character_genders.go b/endpoint/character_genders.go index 215f2b7..4336571 100644 --- a/endpoint/character_genders.go +++ b/endpoint/character_genders.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type CharacterGenders struct{ BaseEndpoint } +type CharacterGenders struct { + BaseEndpoint[pb.CharacterGender] +} + +func NewCharacterGenders(request func(URL string, dataBody any) (*resty.Response, error)) *CharacterGenders { + a := &CharacterGenders{ + BaseEndpoint[pb.CharacterGender]{ + endpointName: EPCharacterGenders, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *CharacterGenders) Query(query string) ([]*pb.CharacterGender, error) { resp, err := a.request("https://api.igdb.com/v4/character_genders.pb", query) diff --git a/endpoint/character_mug_shots.go b/endpoint/character_mug_shots.go index fa5632d..9862baa 100644 --- a/endpoint/character_mug_shots.go +++ b/endpoint/character_mug_shots.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type CharacterMugShots struct{ BaseEndpoint } +type CharacterMugShots struct { + BaseEndpoint[pb.CharacterMugShot] +} + +func NewCharacterMugShots(request func(URL string, dataBody any) (*resty.Response, error)) *CharacterMugShots { + a := &CharacterMugShots{ + BaseEndpoint[pb.CharacterMugShot]{ + endpointName: EPCharacterMugShots, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *CharacterMugShots) Query(query string) ([]*pb.CharacterMugShot, error) { resp, err := a.request("https://api.igdb.com/v4/character_mug_shots.pb", query) diff --git a/endpoint/character_species.go b/endpoint/character_species.go index c1a9ca5..9ab82ad 100644 --- a/endpoint/character_species.go +++ b/endpoint/character_species.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type CharacterSpecies struct{ BaseEndpoint } +type CharacterSpecies struct { + BaseEndpoint[pb.CharacterSpecie] +} + +func NewCharacterSpecies(request func(URL string, dataBody any) (*resty.Response, error)) *CharacterSpecies { + a := &CharacterSpecies{ + BaseEndpoint[pb.CharacterSpecie]{ + endpointName: EPCharacterSpecies, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *CharacterSpecies) Query(query string) ([]*pb.CharacterSpecie, error) { resp, err := a.request("https://api.igdb.com/v4/character_species.pb", query) diff --git a/endpoint/characters.go b/endpoint/characters.go index 7fca8bf..2ba73c1 100644 --- a/endpoint/characters.go +++ b/endpoint/characters.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type Characters struct{ BaseEndpoint } +type Characters struct { + BaseEndpoint[pb.Character] +} + +func NewCharacters(request func(URL string, dataBody any) (*resty.Response, error)) *Characters { + a := &Characters{ + BaseEndpoint[pb.Character]{ + endpointName: EPCharacters, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *Characters) Query(query string) ([]*pb.Character, error) { resp, err := a.request("https://api.igdb.com/v4/characters.pb", query) diff --git a/endpoint/collection_membership_types.go b/endpoint/collection_membership_types.go index aba42b5..86524b6 100644 --- a/endpoint/collection_membership_types.go +++ b/endpoint/collection_membership_types.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type CollectionMembershipTypes struct{ BaseEndpoint } +type CollectionMembershipTypes struct { + BaseEndpoint[pb.CollectionMembershipType] +} + +func NewCollectionMembershipTypes(request func(URL string, dataBody any) (*resty.Response, error)) *CollectionMembershipTypes { + a := &CollectionMembershipTypes{ + BaseEndpoint[pb.CollectionMembershipType]{ + endpointName: EPCollectionMembershipTypes, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *CollectionMembershipTypes) Query(query string) ([]*pb.CollectionMembershipType, error) { resp, err := a.request("https://api.igdb.com/v4/collection_membership_types.pb", query) diff --git a/endpoint/collection_memberships.go b/endpoint/collection_memberships.go index 07ab197..52282e7 100644 --- a/endpoint/collection_memberships.go +++ b/endpoint/collection_memberships.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type CollectionMemberships struct{ BaseEndpoint } +type CollectionMemberships struct { + BaseEndpoint[pb.CollectionMembership] +} + +func NewCollectionMemberships(request func(URL string, dataBody any) (*resty.Response, error)) *CollectionMemberships { + a := &CollectionMemberships{ + BaseEndpoint[pb.CollectionMembership]{ + endpointName: EPCollectionMemberships, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *CollectionMemberships) Query(query string) ([]*pb.CollectionMembership, error) { resp, err := a.request("https://api.igdb.com/v4/collection_memberships.pb", query) diff --git a/endpoint/collection_relation_types.go b/endpoint/collection_relation_types.go index 18239a4..22f42b2 100644 --- a/endpoint/collection_relation_types.go +++ b/endpoint/collection_relation_types.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type CollectionRelationTypes struct{ BaseEndpoint } +type CollectionRelationTypes struct { + BaseEndpoint[pb.CollectionRelationType] +} + +func NewCollectionRelationTypes(request func(URL string, dataBody any) (*resty.Response, error)) *CollectionRelationTypes { + a := &CollectionRelationTypes{ + BaseEndpoint[pb.CollectionRelationType]{ + endpointName: EPCollectionRelationTypes, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *CollectionRelationTypes) Query(query string) ([]*pb.CollectionRelationType, error) { resp, err := a.request("https://api.igdb.com/v4/collection_relation_types.pb", query) diff --git a/endpoint/collection_relations.go b/endpoint/collection_relations.go index 44df7c6..ef0851e 100644 --- a/endpoint/collection_relations.go +++ b/endpoint/collection_relations.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type CollectionRelations struct{ BaseEndpoint } +type CollectionRelations struct { + BaseEndpoint[pb.CollectionRelation] +} + +func NewCollectionRelations(request func(URL string, dataBody any) (*resty.Response, error)) *CollectionRelations { + a := &CollectionRelations{ + BaseEndpoint[pb.CollectionRelation]{ + endpointName: EPCollectionRelations, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *CollectionRelations) Query(query string) ([]*pb.CollectionRelation, error) { resp, err := a.request("https://api.igdb.com/v4/collection_relations.pb", query) diff --git a/endpoint/collection_types.go b/endpoint/collection_types.go index c2f42a7..2e787fa 100644 --- a/endpoint/collection_types.go +++ b/endpoint/collection_types.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type CollectionTypes struct{ BaseEndpoint } +type CollectionTypes struct { + BaseEndpoint[pb.CollectionType] +} + +func NewCollectionTypes(request func(URL string, dataBody any) (*resty.Response, error)) *CollectionTypes { + a := &CollectionTypes{ + BaseEndpoint[pb.CollectionType]{ + endpointName: EPCollectionTypes, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *CollectionTypes) Query(query string) ([]*pb.CollectionType, error) { resp, err := a.request("https://api.igdb.com/v4/collection_types.pb", query) diff --git a/endpoint/collections.go b/endpoint/collections.go index 274b4da..c3f631e 100644 --- a/endpoint/collections.go +++ b/endpoint/collections.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type Collections struct{ BaseEndpoint } +type Collections struct { + BaseEndpoint[pb.Collection] +} + +func NewCollections(request func(URL string, dataBody any) (*resty.Response, error)) *Collections { + a := &Collections{ + BaseEndpoint[pb.Collection]{ + endpointName: EPCollections, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *Collections) Query(query string) ([]*pb.Collection, error) { resp, err := a.request("https://api.igdb.com/v4/collections.pb", query) diff --git a/endpoint/companies.go b/endpoint/companies.go index 94b0304..ebed71d 100644 --- a/endpoint/companies.go +++ b/endpoint/companies.go @@ -5,11 +5,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type Companies struct{ BaseEndpoint } +type Companies struct { + BaseEndpoint[pb.Company] +} + +func NewCompanies(request func(URL string, dataBody any) (*resty.Response, error)) *Companies { + a := &Companies{ + BaseEndpoint[pb.Company]{ + endpointName: EPCompanies, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *Companies) Query(query string) ([]*pb.Company, error) { resp, err := a.request("https://api.igdb.com/v4/companies.pb", query) diff --git a/endpoint/company_logos.go b/endpoint/company_logos.go index 28b472d..7f8d16c 100644 --- a/endpoint/company_logos.go +++ b/endpoint/company_logos.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type CompanyLogos struct{ BaseEndpoint } +type CompanyLogos struct { + BaseEndpoint[pb.CompanyLogo] +} + +func NewCompanyLogos(request func(URL string, dataBody any) (*resty.Response, error)) *CompanyLogos { + a := &CompanyLogos{ + BaseEndpoint[pb.CompanyLogo]{ + endpointName: EPCompanyLogos, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *CompanyLogos) Query(query string) ([]*pb.CompanyLogo, error) { resp, err := a.request("https://api.igdb.com/v4/company_logos.pb", query) diff --git a/endpoint/company_statuses.go b/endpoint/company_statuses.go index b0bddc7..7013cf7 100644 --- a/endpoint/company_statuses.go +++ b/endpoint/company_statuses.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type CompanyStatuses struct{ BaseEndpoint } +type CompanyStatuses struct { + BaseEndpoint[pb.CompanyStatus] +} + +func NewCompanyStatuses(request func(URL string, dataBody any) (*resty.Response, error)) *CompanyStatuses { + a := &CompanyStatuses{ + BaseEndpoint[pb.CompanyStatus]{ + endpointName: EPCompanyStatuses, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *CompanyStatuses) Query(query string) ([]*pb.CompanyStatus, error) { resp, err := a.request("https://api.igdb.com/v4/company_statuses.pb", query) diff --git a/endpoint/company_websites.go b/endpoint/company_websites.go index b6ef1f0..3c21d1f 100644 --- a/endpoint/company_websites.go +++ b/endpoint/company_websites.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type CompanyWebsites struct{ BaseEndpoint } +type CompanyWebsites struct { + BaseEndpoint[pb.CompanyWebsite] +} + +func NewCompanyWebsites(request func(URL string, dataBody any) (*resty.Response, error)) *CompanyWebsites { + a := &CompanyWebsites{ + BaseEndpoint[pb.CompanyWebsite]{ + endpointName: EPCompanyWebsites, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *CompanyWebsites) Query(query string) ([]*pb.CompanyWebsite, error) { resp, err := a.request("https://api.igdb.com/v4/company_websites.pb", query) diff --git a/endpoint/covers.go b/endpoint/covers.go index e7b09a8..350d144 100644 --- a/endpoint/covers.go +++ b/endpoint/covers.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type Covers struct{ BaseEndpoint } +type Covers struct { + BaseEndpoint[pb.Cover] +} + +func NewCovers(request func(URL string, dataBody any) (*resty.Response, error)) *Covers { + a := &Covers{ + BaseEndpoint[pb.Cover]{ + endpointName: EPCovers, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *Covers) Query(query string) ([]*pb.Cover, error) { resp, err := a.request("https://api.igdb.com/v4/covers.pb", query) diff --git a/endpoint/date_formats.go b/endpoint/date_formats.go index 4ebcc3c..8080ea4 100644 --- a/endpoint/date_formats.go +++ b/endpoint/date_formats.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type DateFormats struct{ BaseEndpoint } +type DateFormats struct { + BaseEndpoint[pb.DateFormat] +} + +func NewDateFormats(request func(URL string, dataBody any) (*resty.Response, error)) *DateFormats { + a := &DateFormats{ + BaseEndpoint[pb.DateFormat]{ + endpointName: EPDateFormats, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *DateFormats) Query(query string) ([]*pb.DateFormat, error) { resp, err := a.request("https://api.igdb.com/v4/date_formats.pb", query) diff --git a/endpoint/event_logos.go b/endpoint/event_logos.go index 0bc7c74..1dc9329 100644 --- a/endpoint/event_logos.go +++ b/endpoint/event_logos.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type EventLogos struct{ BaseEndpoint } +type EventLogos struct { + BaseEndpoint[pb.EventLogo] +} + +func NewEventLogos(request func(URL string, dataBody any) (*resty.Response, error)) *EventLogos { + a := &EventLogos{ + BaseEndpoint[pb.EventLogo]{ + endpointName: EPEventLogos, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *EventLogos) Query(query string) ([]*pb.EventLogo, error) { resp, err := a.request("https://api.igdb.com/v4/event_logos.pb", query) diff --git a/endpoint/event_networks.go b/endpoint/event_networks.go index 0561087..47ebc95 100644 --- a/endpoint/event_networks.go +++ b/endpoint/event_networks.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type EventNetworks struct{ BaseEndpoint } +type EventNetworks struct { + BaseEndpoint[pb.EventNetwork] +} + +func NewEventNetworks(request func(URL string, dataBody any) (*resty.Response, error)) *EventNetworks { + a := &EventNetworks{ + BaseEndpoint[pb.EventNetwork]{ + endpointName: EPEventNetworks, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *EventNetworks) Query(query string) ([]*pb.EventNetwork, error) { resp, err := a.request("https://api.igdb.com/v4/event_networks.pb", query) diff --git a/endpoint/events.go b/endpoint/events.go index 28b6a37..86bbc10 100644 --- a/endpoint/events.go +++ b/endpoint/events.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type Events struct{ BaseEndpoint } +type Events struct { + BaseEndpoint[pb.Event] +} + +func NewEvents(request func(URL string, dataBody any) (*resty.Response, error)) *Events { + a := &Events{ + BaseEndpoint[pb.Event]{ + endpointName: EPEvents, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *Events) Query(query string) ([]*pb.Event, error) { resp, err := a.request("https://api.igdb.com/v4/events.pb", query) diff --git a/endpoint/external_game_sources.go b/endpoint/external_game_sources.go index 9999854..e4d404c 100644 --- a/endpoint/external_game_sources.go +++ b/endpoint/external_game_sources.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type ExternalGameSources struct{ BaseEndpoint } +type ExternalGameSources struct { + BaseEndpoint[pb.ExternalGameSource] +} + +func NewExternalGameSources(request func(URL string, dataBody any) (*resty.Response, error)) *ExternalGameSources { + a := &ExternalGameSources{ + BaseEndpoint[pb.ExternalGameSource]{ + endpointName: EPExternalGameSources, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *ExternalGameSources) Query(query string) ([]*pb.ExternalGameSource, error) { resp, err := a.request("https://api.igdb.com/v4/external_game_sources.pb", query) diff --git a/endpoint/external_games.go b/endpoint/external_games.go index 4b57f1e..0384b4f 100644 --- a/endpoint/external_games.go +++ b/endpoint/external_games.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type ExternalGames struct{ BaseEndpoint } +type ExternalGames struct { + BaseEndpoint[pb.ExternalGame] +} + +func NewExternalGames(request func(URL string, dataBody any) (*resty.Response, error)) *ExternalGames { + a := &ExternalGames{ + BaseEndpoint[pb.ExternalGame]{ + endpointName: EPExternalGames, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *ExternalGames) Query(query string) ([]*pb.ExternalGame, error) { resp, err := a.request("https://api.igdb.com/v4/external_games.pb", query) diff --git a/endpoint/franchises.go b/endpoint/franchises.go index 7b0db84..26e48f1 100644 --- a/endpoint/franchises.go +++ b/endpoint/franchises.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type Franchises struct{ BaseEndpoint } +type Franchises struct { + BaseEndpoint[pb.Franchise] +} + +func NewFranchises(request func(URL string, dataBody any) (*resty.Response, error)) *Franchises { + a := &Franchises{ + BaseEndpoint[pb.Franchise]{ + endpointName: EPFranchises, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *Franchises) Query(query string) ([]*pb.Franchise, error) { resp, err := a.request("https://api.igdb.com/v4/franchises.pb", query) diff --git a/endpoint/game_engine_logos.go b/endpoint/game_engine_logos.go index d11a4b7..1aef913 100644 --- a/endpoint/game_engine_logos.go +++ b/endpoint/game_engine_logos.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type GameEngineLogos struct{ BaseEndpoint } +type GameEngineLogos struct { + BaseEndpoint[pb.GameEngineLogo] +} + +func NewGameEngineLogos(request func(URL string, dataBody any) (*resty.Response, error)) *GameEngineLogos { + a := &GameEngineLogos{ + BaseEndpoint[pb.GameEngineLogo]{ + endpointName: EPGameEngineLogos, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *GameEngineLogos) Query(query string) ([]*pb.GameEngineLogo, error) { resp, err := a.request("https://api.igdb.com/v4/game_engine_logos.pb", query) diff --git a/endpoint/game_engines.go b/endpoint/game_engines.go index 109e417..74699b4 100644 --- a/endpoint/game_engines.go +++ b/endpoint/game_engines.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type GameEngines struct{ BaseEndpoint } +type GameEngines struct { + BaseEndpoint[pb.GameEngine] +} + +func NewGameEngines(request func(URL string, dataBody any) (*resty.Response, error)) *GameEngines { + a := &GameEngines{ + BaseEndpoint[pb.GameEngine]{ + endpointName: EPGameEngines, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *GameEngines) Query(query string) ([]*pb.GameEngine, error) { resp, err := a.request("https://api.igdb.com/v4/game_engines.pb", query) diff --git a/endpoint/game_localizations.go b/endpoint/game_localizations.go index 3b07aa8..21d4879 100644 --- a/endpoint/game_localizations.go +++ b/endpoint/game_localizations.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type GameLocalizations struct{ BaseEndpoint } +type GameLocalizations struct { + BaseEndpoint[pb.GameLocalization] +} + +func NewGameLocalizations(request func(URL string, dataBody any) (*resty.Response, error)) *GameLocalizations { + a := &GameLocalizations{ + BaseEndpoint[pb.GameLocalization]{ + endpointName: EPGameLocalizations, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *GameLocalizations) Query(query string) ([]*pb.GameLocalization, error) { resp, err := a.request("https://api.igdb.com/v4/game_localizations.pb", query) diff --git a/endpoint/game_modes.go b/endpoint/game_modes.go index ed525be..1ebc7e3 100644 --- a/endpoint/game_modes.go +++ b/endpoint/game_modes.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type GameModes struct{ BaseEndpoint } +type GameModes struct { + BaseEndpoint[pb.GameMode] +} + +func NewGameModes(request func(URL string, dataBody any) (*resty.Response, error)) *GameModes { + a := &GameModes{ + BaseEndpoint[pb.GameMode]{ + endpointName: EPGameModes, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *GameModes) Query(query string) ([]*pb.GameMode, error) { resp, err := a.request("https://api.igdb.com/v4/game_modes.pb", query) diff --git a/endpoint/game_release_formats.go b/endpoint/game_release_formats.go index 44010ab..b53599f 100644 --- a/endpoint/game_release_formats.go +++ b/endpoint/game_release_formats.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type GameReleaseFormats struct{ BaseEndpoint } +type GameReleaseFormats struct { + BaseEndpoint[pb.GameReleaseFormat] +} + +func NewGameReleaseFormats(request func(URL string, dataBody any) (*resty.Response, error)) *GameReleaseFormats { + a := &GameReleaseFormats{ + BaseEndpoint[pb.GameReleaseFormat]{ + endpointName: EPGameReleaseFormats, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *GameReleaseFormats) Query(query string) ([]*pb.GameReleaseFormat, error) { resp, err := a.request("https://api.igdb.com/v4/game_release_formats.pb", query) diff --git a/endpoint/game_statuses.go b/endpoint/game_statuses.go index f857ada..cc4feb2 100644 --- a/endpoint/game_statuses.go +++ b/endpoint/game_statuses.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type GameStatuses struct{ BaseEndpoint } +type GameStatuses struct { + BaseEndpoint[pb.GameStatus] +} + +func NewGameStatuses(request func(URL string, dataBody any) (*resty.Response, error)) *GameStatuses { + a := &GameStatuses{ + BaseEndpoint[pb.GameStatus]{ + endpointName: EPGameStatuses, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *GameStatuses) Query(query string) ([]*pb.GameStatus, error) { resp, err := a.request("https://api.igdb.com/v4/game_statuses.pb", query) diff --git a/endpoint/game_time_to_beats.go b/endpoint/game_time_to_beats.go index b305f0d..01529c6 100644 --- a/endpoint/game_time_to_beats.go +++ b/endpoint/game_time_to_beats.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type GameTimeToBeats struct{ BaseEndpoint } +type GameTimeToBeats struct { + BaseEndpoint[pb.GameTimeToBeat] +} + +func NewGameTimeToBeats(request func(URL string, dataBody any) (*resty.Response, error)) *GameTimeToBeats { + a := &GameTimeToBeats{ + BaseEndpoint[pb.GameTimeToBeat]{ + endpointName: EPGameTimeToBeats, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *GameTimeToBeats) Query(query string) ([]*pb.GameTimeToBeat, error) { resp, err := a.request("https://api.igdb.com/v4/game_time_to_beats.pb", query) diff --git a/endpoint/game_types.go b/endpoint/game_types.go index 0161c92..6db2671 100644 --- a/endpoint/game_types.go +++ b/endpoint/game_types.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type GameTypes struct{ BaseEndpoint } +type GameTypes struct { + BaseEndpoint[pb.GameType] +} + +func NewGameTypes(request func(URL string, dataBody any) (*resty.Response, error)) *GameTypes { + a := &GameTypes{ + BaseEndpoint[pb.GameType]{ + endpointName: EPGameTypes, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *GameTypes) Query(query string) ([]*pb.GameType, error) { resp, err := a.request("https://api.igdb.com/v4/game_types.pb", query) diff --git a/endpoint/game_version_feature_values.go b/endpoint/game_version_feature_values.go index 654947c..a8f7ef6 100644 --- a/endpoint/game_version_feature_values.go +++ b/endpoint/game_version_feature_values.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type GameVersionFeatureValues struct{ BaseEndpoint } +type GameVersionFeatureValues struct { + BaseEndpoint[pb.GameVersionFeatureValue] +} + +func NewGameVersionFeatureValues(request func(URL string, dataBody any) (*resty.Response, error)) *GameVersionFeatureValues { + a := &GameVersionFeatureValues{ + BaseEndpoint[pb.GameVersionFeatureValue]{ + endpointName: EPGameVersionFeatureValues, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *GameVersionFeatureValues) Query(query string) ([]*pb.GameVersionFeatureValue, error) { resp, err := a.request("https://api.igdb.com/v4/game_version_feature_values.pb", query) diff --git a/endpoint/game_version_features.go b/endpoint/game_version_features.go index 1e7cd6c..4cdd9e7 100644 --- a/endpoint/game_version_features.go +++ b/endpoint/game_version_features.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type GameVersionFeatures struct{ BaseEndpoint } +type GameVersionFeatures struct { + BaseEndpoint[pb.GameVersionFeature] +} + +func NewGameVersionFeatures(request func(URL string, dataBody any) (*resty.Response, error)) *GameVersionFeatures { + a := &GameVersionFeatures{ + BaseEndpoint[pb.GameVersionFeature]{ + endpointName: EPGameVersionFeatures, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *GameVersionFeatures) Query(query string) ([]*pb.GameVersionFeature, error) { resp, err := a.request("https://api.igdb.com/v4/game_version_features.pb", query) diff --git a/endpoint/game_versions.go b/endpoint/game_versions.go index 90945bd..8d8d8a1 100644 --- a/endpoint/game_versions.go +++ b/endpoint/game_versions.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type GameVersions struct{ BaseEndpoint } +type GameVersions struct { + BaseEndpoint[pb.GameVersion] +} + +func NewGameVersions(request func(URL string, dataBody any) (*resty.Response, error)) *GameVersions { + a := &GameVersions{ + BaseEndpoint[pb.GameVersion]{ + endpointName: EPGameVersions, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *GameVersions) Query(query string) ([]*pb.GameVersion, error) { resp, err := a.request("https://api.igdb.com/v4/game_versions.pb", query) diff --git a/endpoint/game_videos.go b/endpoint/game_videos.go index 063ed3b..2892ad9 100644 --- a/endpoint/game_videos.go +++ b/endpoint/game_videos.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type GameVideos struct{ BaseEndpoint } +type GameVideos struct { + BaseEndpoint[pb.GameVideo] +} + +func NewGameVideos(request func(URL string, dataBody any) (*resty.Response, error)) *GameVideos { + a := &GameVideos{ + BaseEndpoint[pb.GameVideo]{ + endpointName: EPGameVideos, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *GameVideos) Query(query string) ([]*pb.GameVideo, error) { resp, err := a.request("https://api.igdb.com/v4/game_videos.pb", query) diff --git a/endpoint/games.go b/endpoint/games.go index 1455b6b..1190824 100644 --- a/endpoint/games.go +++ b/endpoint/games.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type Games struct{ BaseEndpoint } +type Games struct { + BaseEndpoint[pb.Game] +} + +func NewGames(request func(URL string, dataBody any) (*resty.Response, error)) *Games { + a := &Games{ + BaseEndpoint[pb.Game]{ + endpointName: EPGames, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *Games) Query(query string) ([]*pb.Game, error) { resp, err := a.request("https://api.igdb.com/v4/games.pb", query) diff --git a/endpoint/genres.go b/endpoint/genres.go index 489e683..1adc502 100644 --- a/endpoint/genres.go +++ b/endpoint/genres.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type Genres struct{ BaseEndpoint } +type Genres struct { + BaseEndpoint[pb.Genre] +} + +func NewGenres(request func(URL string, dataBody any) (*resty.Response, error)) *Genres { + a := &Genres{ + BaseEndpoint[pb.Genre]{ + endpointName: EPGenres, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *Genres) Query(query string) ([]*pb.Genre, error) { resp, err := a.request("https://api.igdb.com/v4/genres.pb", query) diff --git a/endpoint/involved_companies.go b/endpoint/involved_companies.go index acc3605..69d23bc 100644 --- a/endpoint/involved_companies.go +++ b/endpoint/involved_companies.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type InvolvedCompanies struct{ BaseEndpoint } +type InvolvedCompanies struct { + BaseEndpoint[pb.InvolvedCompany] +} + +func NewInvolvedCompanies(request func(URL string, dataBody any) (*resty.Response, error)) *InvolvedCompanies { + a := &InvolvedCompanies{ + BaseEndpoint[pb.InvolvedCompany]{ + endpointName: EPInvolvedCompanies, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *InvolvedCompanies) Query(query string) ([]*pb.InvolvedCompany, error) { resp, err := a.request("https://api.igdb.com/v4/involved_companies.pb", query) diff --git a/endpoint/keywords.go b/endpoint/keywords.go index 3e801bd..66cbc1b 100644 --- a/endpoint/keywords.go +++ b/endpoint/keywords.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type Keywords struct{ BaseEndpoint } +type Keywords struct { + BaseEndpoint[pb.Keyword] +} + +func NewKeywords(request func(URL string, dataBody any) (*resty.Response, error)) *Keywords { + a := &Keywords{ + BaseEndpoint[pb.Keyword]{ + endpointName: EPKeywords, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *Keywords) Query(query string) ([]*pb.Keyword, error) { resp, err := a.request("https://api.igdb.com/v4/keywords.pb", query) diff --git a/endpoint/language_support_types.go b/endpoint/language_support_types.go index 620e0cf..aa07923 100644 --- a/endpoint/language_support_types.go +++ b/endpoint/language_support_types.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type LanguageSupportTypes struct{ BaseEndpoint } +type LanguageSupportTypes struct { + BaseEndpoint[pb.LanguageSupportType] +} + +func NewLanguageSupportTypes(request func(URL string, dataBody any) (*resty.Response, error)) *LanguageSupportTypes { + a := &LanguageSupportTypes{ + BaseEndpoint[pb.LanguageSupportType]{ + endpointName: EPLanguageSupportTypes, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *LanguageSupportTypes) Query(query string) ([]*pb.LanguageSupportType, error) { resp, err := a.request("https://api.igdb.com/v4/language_support_types.pb", query) diff --git a/endpoint/language_supports.go b/endpoint/language_supports.go index 95ae4f3..34f8b7f 100644 --- a/endpoint/language_supports.go +++ b/endpoint/language_supports.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type LanguageSupports struct{ BaseEndpoint } +type LanguageSupports struct { + BaseEndpoint[pb.LanguageSupport] +} + +func NewLanguageSupports(request func(URL string, dataBody any) (*resty.Response, error)) *LanguageSupports { + a := &LanguageSupports{ + BaseEndpoint[pb.LanguageSupport]{ + endpointName: EPLanguageSupports, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *LanguageSupports) Query(query string) ([]*pb.LanguageSupport, error) { resp, err := a.request("https://api.igdb.com/v4/language_supports.pb", query) diff --git a/endpoint/languages.go b/endpoint/languages.go index c27e093..785c6af 100644 --- a/endpoint/languages.go +++ b/endpoint/languages.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type Languages struct{ BaseEndpoint } +type Languages struct { + BaseEndpoint[pb.Language] +} + +func NewLanguages(request func(URL string, dataBody any) (*resty.Response, error)) *Languages { + a := &Languages{ + BaseEndpoint[pb.Language]{ + endpointName: EPLanguages, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *Languages) Query(query string) ([]*pb.Language, error) { resp, err := a.request("https://api.igdb.com/v4/languages.pb", query) diff --git a/endpoint/multiplayer_modes.go b/endpoint/multiplayer_modes.go index 2244440..e1a8550 100644 --- a/endpoint/multiplayer_modes.go +++ b/endpoint/multiplayer_modes.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type MultiplayerModes struct{ BaseEndpoint } +type MultiplayerModes struct { + BaseEndpoint[pb.MultiplayerMode] +} + +func NewMultiplayerModes(request func(URL string, dataBody any) (*resty.Response, error)) *MultiplayerModes { + a := &MultiplayerModes{ + BaseEndpoint[pb.MultiplayerMode]{ + endpointName: EPMultiplayerModes, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *MultiplayerModes) Query(query string) ([]*pb.MultiplayerMode, error) { resp, err := a.request("https://api.igdb.com/v4/multiplayer_modes.pb", query) diff --git a/endpoint/network_types.go b/endpoint/network_types.go index 88425c6..4234607 100644 --- a/endpoint/network_types.go +++ b/endpoint/network_types.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type NetworkTypes struct{ BaseEndpoint } +type NetworkTypes struct { + BaseEndpoint[pb.NetworkType] +} + +func NewNetworkTypes(request func(URL string, dataBody any) (*resty.Response, error)) *NetworkTypes { + a := &NetworkTypes{ + BaseEndpoint[pb.NetworkType]{ + endpointName: EPNetworkTypes, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *NetworkTypes) Query(query string) ([]*pb.NetworkType, error) { resp, err := a.request("https://api.igdb.com/v4/network_types.pb", query) diff --git a/endpoint/platform_families.go b/endpoint/platform_families.go index 1a9309f..c45b072 100644 --- a/endpoint/platform_families.go +++ b/endpoint/platform_families.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type PlatformFamilies struct{ BaseEndpoint } +type PlatformFamilies struct { + BaseEndpoint[pb.PlatformFamily] +} + +func NewPlatformFamilies(request func(URL string, dataBody any) (*resty.Response, error)) *PlatformFamilies { + a := &PlatformFamilies{ + BaseEndpoint[pb.PlatformFamily]{ + endpointName: EPPlatformFamilies, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *PlatformFamilies) Query(query string) ([]*pb.PlatformFamily, error) { resp, err := a.request("https://api.igdb.com/v4/platform_families.pb", query) diff --git a/endpoint/platform_logos.go b/endpoint/platform_logos.go index a99d777..504b26c 100644 --- a/endpoint/platform_logos.go +++ b/endpoint/platform_logos.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type PlatformLogos struct{ BaseEndpoint } +type PlatformLogos struct { + BaseEndpoint[pb.PlatformLogo] +} + +func NewPlatformLogos(request func(URL string, dataBody any) (*resty.Response, error)) *PlatformLogos { + a := &PlatformLogos{ + BaseEndpoint[pb.PlatformLogo]{ + endpointName: EPPlatformLogos, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *PlatformLogos) Query(query string) ([]*pb.PlatformLogo, error) { resp, err := a.request("https://api.igdb.com/v4/platform_logos.pb", query) diff --git a/endpoint/platform_types.go b/endpoint/platform_types.go index ca6c583..cb9f457 100644 --- a/endpoint/platform_types.go +++ b/endpoint/platform_types.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type PlatformTypes struct{ BaseEndpoint } +type PlatformTypes struct { + BaseEndpoint[pb.PlatformType] +} + +func NewPlatformTypes(request func(URL string, dataBody any) (*resty.Response, error)) *PlatformTypes { + a := &PlatformTypes{ + BaseEndpoint[pb.PlatformType]{ + endpointName: EPPlatformTypes, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *PlatformTypes) Query(query string) ([]*pb.PlatformType, error) { resp, err := a.request("https://api.igdb.com/v4/platform_types.pb", query) diff --git a/endpoint/platform_version_companies.go b/endpoint/platform_version_companies.go index cc7751c..6947833 100644 --- a/endpoint/platform_version_companies.go +++ b/endpoint/platform_version_companies.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type PlatformVersionCompanies struct{ BaseEndpoint } +type PlatformVersionCompanies struct { + BaseEndpoint[pb.PlatformVersionCompany] +} + +func NewPlatformVersionCompanies(request func(URL string, dataBody any) (*resty.Response, error)) *PlatformVersionCompanies { + a := &PlatformVersionCompanies{ + BaseEndpoint[pb.PlatformVersionCompany]{ + endpointName: EPPlatformVersionCompanies, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *PlatformVersionCompanies) Query(query string) ([]*pb.PlatformVersionCompany, error) { resp, err := a.request("https://api.igdb.com/v4/platform_version_companies.pb", query) diff --git a/endpoint/platform_version_release_dates.go b/endpoint/platform_version_release_dates.go index 8edbd50..016632b 100644 --- a/endpoint/platform_version_release_dates.go +++ b/endpoint/platform_version_release_dates.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type PlatformVersionReleaseDates struct{ BaseEndpoint } +type PlatformVersionReleaseDates struct { + BaseEndpoint[pb.PlatformVersionReleaseDate] +} + +func NewPlatformVersionReleaseDates(request func(URL string, dataBody any) (*resty.Response, error)) *PlatformVersionReleaseDates { + a := &PlatformVersionReleaseDates{ + BaseEndpoint[pb.PlatformVersionReleaseDate]{ + endpointName: EPPlatformVersionReleaseDates, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *PlatformVersionReleaseDates) Query(query string) ([]*pb.PlatformVersionReleaseDate, error) { resp, err := a.request("https://api.igdb.com/v4/platform_version_release_dates.pb", query) diff --git a/endpoint/platform_versions.go b/endpoint/platform_versions.go index c01d802..534a23b 100644 --- a/endpoint/platform_versions.go +++ b/endpoint/platform_versions.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type PlatformVersions struct{ BaseEndpoint } +type PlatformVersions struct { + BaseEndpoint[pb.PlatformVersion] +} + +func NewPlatformVersions(request func(URL string, dataBody any) (*resty.Response, error)) *PlatformVersions { + a := &PlatformVersions{ + BaseEndpoint[pb.PlatformVersion]{ + endpointName: EPPlatformVersions, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *PlatformVersions) Query(query string) ([]*pb.PlatformVersion, error) { resp, err := a.request("https://api.igdb.com/v4/platform_versions.pb", query) diff --git a/endpoint/platform_websites.go b/endpoint/platform_websites.go index e5aaff8..ca3261e 100644 --- a/endpoint/platform_websites.go +++ b/endpoint/platform_websites.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type PlatformWebsites struct{ BaseEndpoint } +type PlatformWebsites struct { + BaseEndpoint[pb.PlatformWebsite] +} + +func NewPlatformWebsites(request func(URL string, dataBody any) (*resty.Response, error)) *PlatformWebsites { + a := &PlatformWebsites{ + BaseEndpoint[pb.PlatformWebsite]{ + endpointName: EPPlatformWebsites, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *PlatformWebsites) Query(query string) ([]*pb.PlatformWebsite, error) { resp, err := a.request("https://api.igdb.com/v4/platform_websites.pb", query) diff --git a/endpoint/platforms.go b/endpoint/platforms.go index 9ec9bb8..e587190 100644 --- a/endpoint/platforms.go +++ b/endpoint/platforms.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type Platforms struct{ BaseEndpoint } +type Platforms struct { + BaseEndpoint[pb.Platform] +} + +func NewPlatforms(request func(URL string, dataBody any) (*resty.Response, error)) *Platforms { + a := &Platforms{ + BaseEndpoint[pb.Platform]{ + endpointName: EPPlatforms, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *Platforms) Query(query string) ([]*pb.Platform, error) { resp, err := a.request("https://api.igdb.com/v4/platforms.pb", query) diff --git a/endpoint/player_perspectives.go b/endpoint/player_perspectives.go index 8a33ffe..cb7fe59 100644 --- a/endpoint/player_perspectives.go +++ b/endpoint/player_perspectives.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type PlayerPerspectives struct{ BaseEndpoint } +type PlayerPerspectives struct { + BaseEndpoint[pb.PlayerPerspective] +} + +func NewPlayerPerspectives(request func(URL string, dataBody any) (*resty.Response, error)) *PlayerPerspectives { + a := &PlayerPerspectives{ + BaseEndpoint[pb.PlayerPerspective]{ + endpointName: EPPlayerPerspectives, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *PlayerPerspectives) Query(query string) ([]*pb.PlayerPerspective, error) { resp, err := a.request("https://api.igdb.com/v4/player_perspectives.pb", query) diff --git a/endpoint/popularity_primitives.go b/endpoint/popularity_primitives.go index dfa830e..7eaa501 100644 --- a/endpoint/popularity_primitives.go +++ b/endpoint/popularity_primitives.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type PopularityPrimitives struct{ BaseEndpoint } +type PopularityPrimitives struct { + BaseEndpoint[pb.PopularityPrimitive] +} + +func NewPopularityPrimitives(request func(URL string, dataBody any) (*resty.Response, error)) *PopularityPrimitives { + a := &PopularityPrimitives{ + BaseEndpoint[pb.PopularityPrimitive]{ + endpointName: EPPopularityPrimitives, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *PopularityPrimitives) Query(query string) ([]*pb.PopularityPrimitive, error) { resp, err := a.request("https://api.igdb.com/v4/popularity_primitives.pb", query) diff --git a/endpoint/popularity_types.go b/endpoint/popularity_types.go index d2941ac..4e3e10a 100644 --- a/endpoint/popularity_types.go +++ b/endpoint/popularity_types.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type PopularityTypes struct{ BaseEndpoint } +type PopularityTypes struct { + BaseEndpoint[pb.PopularityType] +} + +func NewPopularityTypes(request func(URL string, dataBody any) (*resty.Response, error)) *PopularityTypes { + a := &PopularityTypes{ + BaseEndpoint[pb.PopularityType]{ + endpointName: EPPopularityTypes, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *PopularityTypes) Query(query string) ([]*pb.PopularityType, error) { resp, err := a.request("https://api.igdb.com/v4/popularity_types.pb", query) diff --git a/endpoint/regions.go b/endpoint/regions.go index b7b8d17..8c79dd0 100644 --- a/endpoint/regions.go +++ b/endpoint/regions.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type Regions struct{ BaseEndpoint } +type Regions struct { + BaseEndpoint[pb.Region] +} + +func NewRegions(request func(URL string, dataBody any) (*resty.Response, error)) *Regions { + a := &Regions{ + BaseEndpoint[pb.Region]{ + endpointName: EPRegions, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *Regions) Query(query string) ([]*pb.Region, error) { resp, err := a.request("https://api.igdb.com/v4/regions.pb", query) diff --git a/endpoint/release_date_regions.go b/endpoint/release_date_regions.go index b130fca..912e87e 100644 --- a/endpoint/release_date_regions.go +++ b/endpoint/release_date_regions.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type ReleaseDateRegions struct{ BaseEndpoint } +type ReleaseDateRegions struct { + BaseEndpoint[pb.ReleaseDateRegion] +} + +func NewReleaseDateRegions(request func(URL string, dataBody any) (*resty.Response, error)) *ReleaseDateRegions { + a := &ReleaseDateRegions{ + BaseEndpoint[pb.ReleaseDateRegion]{ + endpointName: EPReleaseDateRegions, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *ReleaseDateRegions) Query(query string) ([]*pb.ReleaseDateRegion, error) { resp, err := a.request("https://api.igdb.com/v4/release_date_regions.pb", query) diff --git a/endpoint/release_date_statuses.go b/endpoint/release_date_statuses.go index 8097f44..65a8fc2 100644 --- a/endpoint/release_date_statuses.go +++ b/endpoint/release_date_statuses.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type ReleaseDateStatuses struct{ BaseEndpoint } +type ReleaseDateStatuses struct { + BaseEndpoint[pb.ReleaseDateStatus] +} + +func NewReleaseDateStatuses(request func(URL string, dataBody any) (*resty.Response, error)) *ReleaseDateStatuses { + a := &ReleaseDateStatuses{ + BaseEndpoint[pb.ReleaseDateStatus]{ + endpointName: EPReleaseDateStatuses, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *ReleaseDateStatuses) Query(query string) ([]*pb.ReleaseDateStatus, error) { resp, err := a.request("https://api.igdb.com/v4/release_date_statuses.pb", query) diff --git a/endpoint/release_dates.go b/endpoint/release_dates.go index f4b91f3..126fd25 100644 --- a/endpoint/release_dates.go +++ b/endpoint/release_dates.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type ReleaseDates struct{ BaseEndpoint } +type ReleaseDates struct { + BaseEndpoint[pb.ReleaseDate] +} + +func NewReleaseDates(request func(URL string, dataBody any) (*resty.Response, error)) *ReleaseDates { + a := &ReleaseDates{ + BaseEndpoint[pb.ReleaseDate]{ + endpointName: EPReleaseDates, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *ReleaseDates) Query(query string) ([]*pb.ReleaseDate, error) { resp, err := a.request("https://api.igdb.com/v4/release_dates.pb", query) diff --git a/endpoint/screenshots.go b/endpoint/screenshots.go index 7c4b20c..71043e4 100644 --- a/endpoint/screenshots.go +++ b/endpoint/screenshots.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type Screenshots struct{ BaseEndpoint } +type Screenshots struct { + BaseEndpoint[pb.Screenshot] +} + +func NewScreenshots(request func(URL string, dataBody any) (*resty.Response, error)) *Screenshots { + a := &Screenshots{ + BaseEndpoint[pb.Screenshot]{ + endpointName: EPScreenshots, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *Screenshots) Query(query string) ([]*pb.Screenshot, error) { resp, err := a.request("https://api.igdb.com/v4/screenshots.pb", query) diff --git a/endpoint/search.go b/endpoint/search.go index e6f3822..80bc90f 100644 --- a/endpoint/search.go +++ b/endpoint/search.go @@ -10,6 +10,7 @@ import ( "time" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "github.com/PuerkitoBio/goquery" "github.com/bestnite/go-flaresolverr" @@ -22,10 +23,16 @@ var webSearchCFCookies struct { } type Search struct { - BaseEndpoint + request func(URL string, dataBody any) (*resty.Response, error) flaresolverr *flaresolverr.Flaresolverr } +func NewSearch(request func(URL string, dataBody any) (*resty.Response, error)) *Search { + return &Search{ + request: request, + } +} + func (a *Search) Search(query string) ([]*pb.Search, error) { resp, err := a.request("https://api.igdb.com/v4/search.pb", query) if err != nil { diff --git a/endpoint/themes.go b/endpoint/themes.go index f813a2d..b1202b9 100644 --- a/endpoint/themes.go +++ b/endpoint/themes.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type Themes struct{ BaseEndpoint } +type Themes struct { + BaseEndpoint[pb.Theme] +} + +func NewThemes(request func(URL string, dataBody any) (*resty.Response, error)) *Themes { + a := &Themes{ + BaseEndpoint[pb.Theme]{ + endpointName: EPThemes, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *Themes) Query(query string) ([]*pb.Theme, error) { resp, err := a.request("https://api.igdb.com/v4/themes.pb", query) diff --git a/endpoint/webhooks.go b/endpoint/webhooks.go index 8b7a968..f19a510 100644 --- a/endpoint/webhooks.go +++ b/endpoint/webhooks.go @@ -4,9 +4,19 @@ import ( "fmt" "net/http" "net/url" + + "github.com/go-resty/resty/v2" ) -type Webhooks struct{ BaseEndpoint } +type Webhooks struct { + request func(URL string, dataBody any) (*resty.Response, error) +} + +func NewWebhooks(request func(URL string, dataBody any) (*resty.Response, error)) *Webhooks { + return &Webhooks{ + request: request, + } +} func (a *Webhooks) Register(endpoint EndpointName, secret, callbackUrl string) error { dataBody := url.Values{} diff --git a/endpoint/website_types.go b/endpoint/website_types.go index 6b9a269..6a4ac6a 100644 --- a/endpoint/website_types.go +++ b/endpoint/website_types.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type WebsiteTypes struct{ BaseEndpoint } +type WebsiteTypes struct { + BaseEndpoint[pb.WebsiteType] +} + +func NewWebsiteTypes(request func(URL string, dataBody any) (*resty.Response, error)) *WebsiteTypes { + a := &WebsiteTypes{ + BaseEndpoint[pb.WebsiteType]{ + endpointName: EPWebsiteTypes, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *WebsiteTypes) Query(query string) ([]*pb.WebsiteType, error) { resp, err := a.request("https://api.igdb.com/v4/website_types.pb", query) diff --git a/endpoint/websites.go b/endpoint/websites.go index 55a1900..0d7cebb 100644 --- a/endpoint/websites.go +++ b/endpoint/websites.go @@ -4,11 +4,25 @@ import ( "fmt" pb "github.com/bestnite/go-igdb/proto" + "github.com/go-resty/resty/v2" "google.golang.org/protobuf/proto" ) -type Websites struct{ BaseEndpoint } +type Websites struct { + BaseEndpoint[pb.Website] +} + +func NewWebsites(request func(URL string, dataBody any) (*resty.Response, error)) *Websites { + a := &Websites{ + BaseEndpoint[pb.Website]{ + endpointName: EPWebsites, + request: request, + }, + } + a.queryFunc = a.Query + return a +} func (a *Websites) Query(query string) ([]*pb.Website, error) { resp, err := a.request("https://api.igdb.com/v4/websites.pb", query) diff --git a/register_endpoints.go b/register_endpoints.go index 6f19689..03c0b3c 100644 --- a/register_endpoints.go +++ b/register_endpoints.go @@ -1,358 +1,149 @@ package igdb -import "github.com/bestnite/go-igdb/endpoint" +import ( + "github.com/bestnite/go-igdb/endpoint" +) func registerAllEndpoints(c *Client) { - c.AgeRatingCategories = &endpoint.AgeRatingCategories{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPAgeRatingCategories), - } - c.EntityEndpoints[endpoint.EPAgeRatingCategories] = c.AgeRatingCategories - - c.AgeRatingContentDescriptions = &endpoint.AgeRatingContentDescriptions{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPAgeRatingContentDescriptions), - } - c.EntityEndpoints[endpoint.EPAgeRatingContentDescriptions] = c.AgeRatingContentDescriptions - - c.AgeRatingContentDescriptionsV2 = &endpoint.AgeRatingContentDescriptionsV2{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPAgeRatingContentDescriptionsV2), - } - c.EntityEndpoints[endpoint.EPAgeRatingContentDescriptionsV2] = c.AgeRatingContentDescriptionsV2 - - c.AgeRatingOrganizations = &endpoint.AgeRatingOrganizations{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPAgeRatingOrganizations), - } - c.EntityEndpoints[endpoint.EPAgeRatingOrganizations] = c.AgeRatingOrganizations - - c.AgeRatings = &endpoint.AgeRatings{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPAgeRatings), - } - c.EntityEndpoints[endpoint.EPAgeRatings] = c.AgeRatings - - c.AlternativeNames = &endpoint.AlternativeNames{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPAlternativeNames), - } - c.EntityEndpoints[endpoint.EPAlternativeNames] = c.AlternativeNames - - c.Artworks = &endpoint.Artworks{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPArtworks), - } - c.EntityEndpoints[endpoint.EPArtworks] = c.Artworks - - c.CharacterGenders = &endpoint.CharacterGenders{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPCharacterGenders), - } - c.EntityEndpoints[endpoint.EPCharacterGenders] = c.CharacterGenders - - c.CharacterMugShots = &endpoint.CharacterMugShots{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPCharacterMugShots), - } - c.EntityEndpoints[endpoint.EPCharacterMugShots] = c.CharacterMugShots - - c.Characters = &endpoint.Characters{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPCharacters), - } - c.EntityEndpoints[endpoint.EPCharacters] = c.Characters - - c.CharacterSpecies = &endpoint.CharacterSpecies{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPCharacterSpecies), - } - c.EntityEndpoints[endpoint.EPCharacterSpecies] = c.CharacterSpecies - - c.CollectionMemberships = &endpoint.CollectionMemberships{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPCollectionMemberships), - } - c.EntityEndpoints[endpoint.EPCollectionMemberships] = c.CollectionMemberships - - c.CollectionMembershipTypes = &endpoint.CollectionMembershipTypes{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPCollectionMembershipTypes), - } - c.EntityEndpoints[endpoint.EPCollectionMembershipTypes] = c.CollectionMembershipTypes - - c.CollectionRelations = &endpoint.CollectionRelations{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPCollectionRelations), - } - c.EntityEndpoints[endpoint.EPCollectionRelations] = c.CollectionRelations - - c.CollectionRelationTypes = &endpoint.CollectionRelationTypes{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPCollectionRelationTypes), - } - c.EntityEndpoints[endpoint.EPCollectionRelationTypes] = c.CollectionRelationTypes - - c.Collections = &endpoint.Collections{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPCollections), - } - c.EntityEndpoints[endpoint.EPCollections] = c.Collections - - c.CollectionTypes = &endpoint.CollectionTypes{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPCollectionTypes), - } - c.EntityEndpoints[endpoint.EPCollectionTypes] = c.CollectionTypes - - c.Companies = &endpoint.Companies{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPCompanies), - } - c.EntityEndpoints[endpoint.EPCompanies] = c.Companies - - c.CompanyLogos = &endpoint.CompanyLogos{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPCompanyLogos), - } - c.EntityEndpoints[endpoint.EPCompanyLogos] = c.CompanyLogos - - c.CompanyStatuses = &endpoint.CompanyStatuses{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPCompanyStatuses), - } - c.EntityEndpoints[endpoint.EPCompanyStatuses] = c.CompanyStatuses - - c.CompanyWebsites = &endpoint.CompanyWebsites{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPCompanyWebsites), - } - c.EntityEndpoints[endpoint.EPCompanyWebsites] = c.CompanyWebsites - - c.Covers = &endpoint.Covers{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPCovers), - } - c.EntityEndpoints[endpoint.EPCovers] = c.Covers - - c.DateFormats = &endpoint.DateFormats{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPDateFormats), - } - c.EntityEndpoints[endpoint.EPDateFormats] = c.DateFormats - - c.EventLogos = &endpoint.EventLogos{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPEventLogos), - } - c.EntityEndpoints[endpoint.EPEventLogos] = c.EventLogos - - c.EventNetworks = &endpoint.EventNetworks{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPEventNetworks), - } - c.EntityEndpoints[endpoint.EPEventNetworks] = c.EventNetworks - - c.Events = &endpoint.Events{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPEvents), - } - c.EntityEndpoints[endpoint.EPEvents] = c.Events - - c.ExternalGames = &endpoint.ExternalGames{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPExternalGames), - } - c.EntityEndpoints[endpoint.EPExternalGames] = c.ExternalGames - - c.ExternalGameSources = &endpoint.ExternalGameSources{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPExternalGameSources), - } - c.EntityEndpoints[endpoint.EPExternalGameSources] = c.ExternalGameSources - - c.Franchises = &endpoint.Franchises{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPFranchises), - } - c.EntityEndpoints[endpoint.EPFranchises] = c.Franchises - - c.GameEngineLogos = &endpoint.GameEngineLogos{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPGameEngineLogos), - } - c.EntityEndpoints[endpoint.EPGameEngineLogos] = c.GameEngineLogos - - c.GameEngines = &endpoint.GameEngines{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPGameEngines), - } - c.EntityEndpoints[endpoint.EPGameEngines] = c.GameEngines - - c.GameLocalizations = &endpoint.GameLocalizations{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPGameLocalizations), - } - c.EntityEndpoints[endpoint.EPGameLocalizations] = c.GameLocalizations - - c.GameModes = &endpoint.GameModes{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPGameModes), - } - c.EntityEndpoints[endpoint.EPGameModes] = c.GameModes - - c.GameReleaseFormats = &endpoint.GameReleaseFormats{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPGameReleaseFormats), - } - c.EntityEndpoints[endpoint.EPGameReleaseFormats] = c.GameReleaseFormats - - c.Games = &endpoint.Games{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPGames), - } - c.EntityEndpoints[endpoint.EPGames] = c.Games - - c.GameStatuses = &endpoint.GameStatuses{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPGameStatuses), - } - c.EntityEndpoints[endpoint.EPGameStatuses] = c.GameStatuses - - c.GameTimeToBeats = &endpoint.GameTimeToBeats{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPGameTimeToBeats), - } - c.EntityEndpoints[endpoint.EPGameTimeToBeats] = c.GameTimeToBeats - - c.GameTypes = &endpoint.GameTypes{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPGameTypes), - } - c.EntityEndpoints[endpoint.EPGameTypes] = c.GameTypes - - c.GameVersionFeatures = &endpoint.GameVersionFeatures{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPGameVersionFeatures), - } - c.EntityEndpoints[endpoint.EPGameVersionFeatures] = c.GameVersionFeatures - - c.GameVersionFeatureValues = &endpoint.GameVersionFeatureValues{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPGameVersionFeatureValues), - } - c.EntityEndpoints[endpoint.EPGameVersionFeatureValues] = c.GameVersionFeatureValues - - c.GameVersions = &endpoint.GameVersions{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPGameVersions), - } - c.EntityEndpoints[endpoint.EPGameVersions] = c.GameVersions - - c.GameVideos = &endpoint.GameVideos{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPGameVideos), - } - c.EntityEndpoints[endpoint.EPGameVideos] = c.GameVideos - - c.Genres = &endpoint.Genres{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPGenres), - } - c.EntityEndpoints[endpoint.EPGenres] = c.Genres - - c.InvolvedCompanies = &endpoint.InvolvedCompanies{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPInvolvedCompanies), - } - c.EntityEndpoints[endpoint.EPInvolvedCompanies] = c.InvolvedCompanies - - c.Keywords = &endpoint.Keywords{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPKeywords), - } - c.EntityEndpoints[endpoint.EPKeywords] = c.Keywords - - c.Languages = &endpoint.Languages{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPLanguages), - } - c.EntityEndpoints[endpoint.EPLanguages] = c.Languages - - c.LanguageSupports = &endpoint.LanguageSupports{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPLanguageSupports), - } - c.EntityEndpoints[endpoint.EPLanguageSupports] = c.LanguageSupports - - c.LanguageSupportTypes = &endpoint.LanguageSupportTypes{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPLanguageSupportTypes), - } - c.EntityEndpoints[endpoint.EPLanguageSupportTypes] = c.LanguageSupportTypes - - c.MultiplayerModes = &endpoint.MultiplayerModes{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPMultiplayerModes), - } - c.EntityEndpoints[endpoint.EPMultiplayerModes] = c.MultiplayerModes - - c.NetworkTypes = &endpoint.NetworkTypes{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPNetworkTypes), - } - c.EntityEndpoints[endpoint.EPNetworkTypes] = c.NetworkTypes - - c.PlatformFamilies = &endpoint.PlatformFamilies{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPPlatformFamilies), - } - c.EntityEndpoints[endpoint.EPPlatformFamilies] = c.PlatformFamilies - - c.PlatformLogos = &endpoint.PlatformLogos{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPPlatformLogos), - } - c.EntityEndpoints[endpoint.EPPlatformLogos] = c.PlatformLogos - - c.Platforms = &endpoint.Platforms{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPPlatforms), - } - c.EntityEndpoints[endpoint.EPPlatforms] = c.Platforms - - c.PlatformTypes = &endpoint.PlatformTypes{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPPlatformTypes), - } - c.EntityEndpoints[endpoint.EPPlatformTypes] = c.PlatformTypes - - c.PlatformVersionCompanies = &endpoint.PlatformVersionCompanies{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPPlatformVersionCompanies), - } - c.EntityEndpoints[endpoint.EPPlatformVersionCompanies] = c.PlatformVersionCompanies - - c.PlatformVersionReleaseDates = &endpoint.PlatformVersionReleaseDates{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPPlatformVersionReleaseDates), - } - c.EntityEndpoints[endpoint.EPPlatformVersionReleaseDates] = c.PlatformVersionReleaseDates - - c.PlatformVersions = &endpoint.PlatformVersions{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPPlatformVersions), - } - c.EntityEndpoints[endpoint.EPPlatformVersions] = c.PlatformVersions - - c.PlatformWebsites = &endpoint.PlatformWebsites{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPPlatformWebsites), - } - c.EntityEndpoints[endpoint.EPPlatformWebsites] = c.PlatformWebsites - - c.PlayerPerspectives = &endpoint.PlayerPerspectives{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPPlayerPerspectives), - } - c.EntityEndpoints[endpoint.EPPlayerPerspectives] = c.PlayerPerspectives - - c.PopularityPrimitives = &endpoint.PopularityPrimitives{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPPopularityPrimitives), - } - c.EntityEndpoints[endpoint.EPPopularityPrimitives] = c.PopularityPrimitives - - c.PopularityTypes = &endpoint.PopularityTypes{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPPopularityTypes), - } - c.EntityEndpoints[endpoint.EPPopularityTypes] = c.PopularityTypes - - c.Regions = &endpoint.Regions{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPRegions), - } - c.EntityEndpoints[endpoint.EPRegions] = c.Regions - - c.ReleaseDateRegions = &endpoint.ReleaseDateRegions{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPReleaseDateRegions), - } - c.EntityEndpoints[endpoint.EPReleaseDateRegions] = c.ReleaseDateRegions - - c.ReleaseDates = &endpoint.ReleaseDates{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPReleaseDates), - } - c.EntityEndpoints[endpoint.EPReleaseDates] = c.ReleaseDates - - c.ReleaseDateStatuses = &endpoint.ReleaseDateStatuses{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPReleaseDateStatuses), - } - c.EntityEndpoints[endpoint.EPReleaseDateStatuses] = c.ReleaseDateStatuses - - c.Screenshots = &endpoint.Screenshots{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPScreenshots), - } - c.EntityEndpoints[endpoint.EPScreenshots] = c.Screenshots - - c.Themes = &endpoint.Themes{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPThemes), - } - c.EntityEndpoints[endpoint.EPThemes] = c.Themes - - c.Websites = &endpoint.Websites{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPWebsites), - } - c.EntityEndpoints[endpoint.EPWebsites] = c.Websites - - c.WebsiteTypes = &endpoint.WebsiteTypes{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPWebsiteTypes), - } - c.EntityEndpoints[endpoint.EPWebsiteTypes] = c.WebsiteTypes - - c.Webhooks = &endpoint.Webhooks{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPWebhooks), - } - - c.Search = &endpoint.Search{ - BaseEndpoint: *endpoint.NewBaseEndpoint(c.Request, endpoint.EPSearch), - } + c.AgeRatingCategories = endpoint.NewAgeRatingCategories(c.Request) + + c.AgeRatingContentDescriptions = endpoint.NewAgeRatingContentDescriptions(c.Request) + + c.AgeRatingContentDescriptionsV2 = endpoint.NewAgeRatingContentDescriptionsV2(c.Request) + + c.AgeRatingOrganizations = endpoint.NewAgeRatingOrganizations(c.Request) + + c.AgeRatings = endpoint.NewAgeRatings(c.Request) + + c.AlternativeNames = endpoint.NewAlternativeNames(c.Request) + + c.Artworks = endpoint.NewArtworks(c.Request) + + c.CharacterGenders = endpoint.NewCharacterGenders(c.Request) + + c.CharacterMugShots = endpoint.NewCharacterMugShots(c.Request) + + c.Characters = endpoint.NewCharacters(c.Request) + + c.CharacterSpecies = endpoint.NewCharacterSpecies(c.Request) + + c.CollectionMemberships = endpoint.NewCollectionMemberships(c.Request) + + c.CollectionMembershipTypes = endpoint.NewCollectionMembershipTypes(c.Request) + + c.CollectionRelations = endpoint.NewCollectionRelations(c.Request) + + c.CollectionRelationTypes = endpoint.NewCollectionRelationTypes(c.Request) + + c.Collections = endpoint.NewCollections(c.Request) + + c.CollectionTypes = endpoint.NewCollectionTypes(c.Request) + + c.Companies = endpoint.NewCompanies(c.Request) + + c.CompanyLogos = endpoint.NewCompanyLogos(c.Request) + + c.CompanyStatuses = endpoint.NewCompanyStatuses(c.Request) + + c.CompanyWebsites = endpoint.NewCompanyWebsites(c.Request) + + c.Covers = endpoint.NewCovers(c.Request) + + c.DateFormats = endpoint.NewDateFormats(c.Request) + + c.EventLogos = endpoint.NewEventLogos(c.Request) + + c.EventNetworks = endpoint.NewEventNetworks(c.Request) + + c.Events = endpoint.NewEvents(c.Request) + + c.ExternalGames = endpoint.NewExternalGames(c.Request) + + c.ExternalGameSources = endpoint.NewExternalGameSources(c.Request) + + c.Franchises = endpoint.NewFranchises(c.Request) + + c.GameEngineLogos = endpoint.NewGameEngineLogos(c.Request) + + c.GameEngines = endpoint.NewGameEngines(c.Request) + + c.GameLocalizations = endpoint.NewGameLocalizations(c.Request) + + c.GameModes = endpoint.NewGameModes(c.Request) + + c.GameReleaseFormats = endpoint.NewGameReleaseFormats(c.Request) + + c.Games = endpoint.NewGames(c.Request) + + c.GameStatuses = endpoint.NewGameStatuses(c.Request) + + c.GameTimeToBeats = endpoint.NewGameTimeToBeats(c.Request) + + c.GameTypes = endpoint.NewGameTypes(c.Request) + + c.GameVersionFeatures = endpoint.NewGameVersionFeatures(c.Request) + + c.GameVersionFeatureValues = endpoint.NewGameVersionFeatureValues(c.Request) + + c.GameVersions = endpoint.NewGameVersions(c.Request) + + c.GameVideos = endpoint.NewGameVideos(c.Request) + + c.Genres = endpoint.NewGenres(c.Request) + + c.InvolvedCompanies = endpoint.NewInvolvedCompanies(c.Request) + + c.Keywords = endpoint.NewKeywords(c.Request) + + c.Languages = endpoint.NewLanguages(c.Request) + + c.LanguageSupports = endpoint.NewLanguageSupports(c.Request) + + c.LanguageSupportTypes = endpoint.NewLanguageSupportTypes(c.Request) + + c.MultiplayerModes = endpoint.NewMultiplayerModes(c.Request) + + c.NetworkTypes = endpoint.NewNetworkTypes(c.Request) + + c.PlatformFamilies = endpoint.NewPlatformFamilies(c.Request) + + c.PlatformLogos = endpoint.NewPlatformLogos(c.Request) + + c.Platforms = endpoint.NewPlatforms(c.Request) + + c.PlatformTypes = endpoint.NewPlatformTypes(c.Request) + + c.PlatformVersionCompanies = endpoint.NewPlatformVersionCompanies(c.Request) + + c.PlatformVersionReleaseDates = endpoint.NewPlatformVersionReleaseDates(c.Request) + + c.PlatformVersions = endpoint.NewPlatformVersions(c.Request) + + c.PlatformWebsites = endpoint.NewPlatformWebsites(c.Request) + + c.PlayerPerspectives = endpoint.NewPlayerPerspectives(c.Request) + + c.PopularityPrimitives = endpoint.NewPopularityPrimitives(c.Request) + + c.PopularityTypes = endpoint.NewPopularityTypes(c.Request) + + c.Regions = endpoint.NewRegions(c.Request) + + c.ReleaseDateRegions = endpoint.NewReleaseDateRegions(c.Request) + + c.ReleaseDates = endpoint.NewReleaseDates(c.Request) + + c.ReleaseDateStatuses = endpoint.NewReleaseDateStatuses(c.Request) + + c.Screenshots = endpoint.NewScreenshots(c.Request) + + c.Themes = endpoint.NewThemes(c.Request) + + c.Websites = endpoint.NewWebsites(c.Request) + + c.WebsiteTypes = endpoint.NewWebsiteTypes(c.Request) + + c.Webhooks = endpoint.NewWebhooks(c.Request) + + c.Search = endpoint.NewSearch(c.Request) }