diff --git a/example/main.go b/example/main.go index 98ba30b..94f871e 100644 --- a/example/main.go +++ b/example/main.go @@ -4,6 +4,7 @@ import ( "fmt" "log" "os" + "time" "github.com/tribalwarshelp/golang-sdk/sdk" "github.com/tribalwarshelp/shared/models" @@ -130,21 +131,28 @@ func main() { } } - ennoblements, err := api.LiveEnnoblement.Browse("pl151", &sdk.LiveEnnoblementInclude{ - NewOwner: true, - NewOwnerInclude: sdk.PlayerInclude{ - Tribe: true, + ennoblements, err := api.Ennoblement.Browse("pl151", + 100, + 0, + []string{}, + &models.EnnoblementFilter{ + EnnobledAtGTE: time.Now().Add(-1 * time.Hour), }, - OldOwner: true, - OldOwnerInclude: sdk.PlayerInclude{ - Tribe: true, - }, - Village: true, - }) + &sdk.EnnoblementInclude{ + NewOwner: true, + NewOwnerInclude: sdk.PlayerInclude{ + Tribe: true, + }, + OldOwner: true, + OldOwnerInclude: sdk.PlayerInclude{ + Tribe: true, + }, + Village: true, + }) if err != nil { log.Fatal(err) } - for _, ennoblement := range ennoblements { + for _, ennoblement := range ennoblements.Items { fmt.Print("\n\n", ennoblement.EnnobledAt.String(), "\n") if ennoblement.NewOwner != nil { log.Println(ennoblement.NewOwner.ID, ennoblement.NewOwner.Name) diff --git a/go.mod b/go.mod index 4c06050..350a279 100644 --- a/go.mod +++ b/go.mod @@ -5,5 +5,5 @@ go 1.15 require ( github.com/Kichiyaki/gqlgen-client v0.0.0-20200604145848-274796c104f4 github.com/pkg/errors v0.9.1 - github.com/tribalwarshelp/shared v0.0.0-20210109140005-237443e96235 + github.com/tribalwarshelp/shared v0.0.0-20210115163415-972e2df3f7db ) diff --git a/go.sum b/go.sum index 43be3a9..dc1f1b2 100644 --- a/go.sum +++ b/go.sum @@ -76,8 +76,8 @@ github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc h1:9lRDQMhESg+zvGYmW5DyG0UqvY96Bu5QYsTLvCHdrgo= github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc/go.mod h1:bciPuU6GHm1iF1pBvUfxfsH0Wmnc2VbpgvbI9ZWuIRs= -github.com/tribalwarshelp/shared v0.0.0-20210109140005-237443e96235 h1:VMc5zgClXx9IPMK4ttyVpElrOr4dWZ/gKMlASzpiuzA= -github.com/tribalwarshelp/shared v0.0.0-20210109140005-237443e96235/go.mod h1:vtDs7EjEysk4dpFPfu3c4lkICXZYIRV0BrT7rsqG0dw= +github.com/tribalwarshelp/shared v0.0.0-20210115163415-972e2df3f7db h1:RzMEF4BP3YJ7jJOyYO00TdeB6DY7g0Dp/8cQ8t6WKzw= +github.com/tribalwarshelp/shared v0.0.0-20210115163415-972e2df3f7db/go.mod h1:vtDs7EjEysk4dpFPfu3c4lkICXZYIRV0BrT7rsqG0dw= github.com/vmihailenco/bufpool v0.1.11 h1:gOq2WmBrq0i2yW5QJ16ykccQ4wH9UyEsgLm6czKAd94= github.com/vmihailenco/bufpool v0.1.11/go.mod h1:AFf/MOy3l2CFTKbxwt0mp2MwnqjNEs5H/UxrkA5jxTQ= github.com/vmihailenco/msgpack/v4 v4.3.11/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= diff --git a/sdk/ennoblement.go b/sdk/ennoblement.go new file mode 100644 index 0000000..33b7333 --- /dev/null +++ b/sdk/ennoblement.go @@ -0,0 +1,93 @@ +package sdk + +import ( + "fmt" + + "github.com/Kichiyaki/gqlgen-client/client" + "github.com/pkg/errors" + "github.com/tribalwarshelp/shared/models" +) + +type Ennoblement struct { + sdk *SDK +} + +type EnnoblementInclude struct { + NewOwner bool + NewOwnerInclude PlayerInclude + OldOwner bool + OldOwnerInclude PlayerInclude + Village bool +} + +func (incl EnnoblementInclude) String() string { + i := "" + if incl.NewOwner { + i += fmt.Sprintf(` + newOwner { + %s + %s + } + `, playerFields, incl.NewOwnerInclude.String()) + } + if incl.OldOwner { + i += fmt.Sprintf(` + oldOwner { + %s + %s + } + `, playerFields, incl.OldOwnerInclude.String()) + } + if incl.Village { + i += fmt.Sprintf(` + village { + %s + } + `, villageFields) + } + return i +} + +type EnnoblementList struct { + Items []*models.Ennoblement `json:"items" gqlgen:"items"` + Total int `json:"total" gqlgen:"total"` +} + +func (en *Ennoblement) Browse(server string, + limit, + offset int, + sort []string, + filter *models.EnnoblementFilter, + include *EnnoblementInclude) (*EnnoblementList, error) { + if server == "" { + return nil, ErrServerNameIsEmpty + } + if include == nil { + include = &EnnoblementInclude{} + } + resp := struct { + Ennoblements EnnoblementList `json:"ennoblements" gqlgen:"ennoblements"` + }{} + query := fmt.Sprintf(` + query ennoblements($server: String!, $filter: EnnoblementFilter, $limit: Int, $offset: Int, $sort: [String!]) { + ennoblements(server: $server, filter: $filter, limit: $limit, offset: $offset, sort: $sort) { + items { + ennobledAt + %s + } + total + } + } + `, include.String()) + err := en.sdk.Post(query, + &resp, + client.Var("filter", filter), + client.Var("server", server), + client.Var("limit", limit), + client.Var("offset", offset), + client.Var("sort", sort)) + if err != nil { + return nil, errors.Wrap(err, "twhelp sdk") + } + return &resp.Ennoblements, nil +} diff --git a/sdk/live_ennoblement.go b/sdk/live_ennoblement.go deleted file mode 100644 index 519531a..0000000 --- a/sdk/live_ennoblement.go +++ /dev/null @@ -1,76 +0,0 @@ -package sdk - -import ( - "fmt" - - "github.com/Kichiyaki/gqlgen-client/client" - "github.com/pkg/errors" - "github.com/tribalwarshelp/shared/models" -) - -type LiveEnnoblement struct { - sdk *SDK -} - -type LiveEnnoblementInclude struct { - NewOwner bool - NewOwnerInclude PlayerInclude - OldOwner bool - OldOwnerInclude PlayerInclude - Village bool -} - -func (incl LiveEnnoblementInclude) String() string { - i := "" - if incl.NewOwner { - i += fmt.Sprintf(` - newOwner { - %s - %s - } - `, playerFields, incl.NewOwnerInclude.String()) - } - if incl.OldOwner { - i += fmt.Sprintf(` - oldOwner { - %s - %s - } - `, playerFields, incl.OldOwnerInclude.String()) - } - if incl.Village { - i += fmt.Sprintf(` - village { - %s - } - `, villageFields) - } - return i -} - -type liveEnnoblementsResponse struct { - LiveEnnoblements []*models.LiveEnnoblement `json:"liveEnnoblements" gqlgen:"liveEnnoblements"` -} - -func (en *LiveEnnoblement) Browse(server string, include *LiveEnnoblementInclude) ([]*models.LiveEnnoblement, error) { - if server == "" { - return nil, ErrServerNameIsEmpty - } - if include == nil { - include = &LiveEnnoblementInclude{} - } - resp := &liveEnnoblementsResponse{} - query := fmt.Sprintf(` - query liveEnnoblements($server: String!) { - liveEnnoblements(server: $server) { - ennobledAt - %s - } - } - `, include.String()) - err := en.sdk.Post(query, &resp, client.Var("server", server)) - if err != nil { - return nil, errors.Wrap(err, "twhelp sdk") - } - return resp.LiveEnnoblements, nil -} diff --git a/sdk/sdk.go b/sdk/sdk.go index 85cc950..b4d0329 100644 --- a/sdk/sdk.go +++ b/sdk/sdk.go @@ -80,15 +80,15 @@ var ( ) type SDK struct { - url string - client *client.Client - httpClient *http.Client - Version *Version - Server *Server - Player *Player - Tribe *Tribe - Village *Village - LiveEnnoblement *LiveEnnoblement + url string + client *client.Client + httpClient *http.Client + Version *Version + Server *Server + Player *Player + Tribe *Tribe + Village *Village + Ennoblement *Ennoblement } func New(url string) *SDK { @@ -104,7 +104,7 @@ func New(url string) *SDK { sdk.Player = &Player{sdk} sdk.Tribe = &Tribe{sdk} sdk.Village = &Village{sdk} - sdk.LiveEnnoblement = &LiveEnnoblement{sdk} + sdk.Ennoblement = &Ennoblement{sdk} return sdk }