114 lines
1.8 KiB
Go
114 lines
1.8 KiB
Go
package sdk
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"net/http"
|
|
"time"
|
|
|
|
"github.com/Kichiyaki/gqlgen-client/client"
|
|
)
|
|
|
|
var (
|
|
ErrServerNameIsEmpty = fmt.Errorf("twhelp sdk: Server name is empty")
|
|
commonODFields = `
|
|
rankAtt
|
|
scoreAtt
|
|
rankDef
|
|
scoreDef
|
|
rankTotal
|
|
scoreTotal
|
|
`
|
|
playerODFields = fmt.Sprintf(`
|
|
%s
|
|
rankSup
|
|
scoreSup
|
|
`, commonODFields)
|
|
playerFields = fmt.Sprintf(`
|
|
id
|
|
name
|
|
totalVillages
|
|
points
|
|
rank
|
|
exist
|
|
dailyGrowth
|
|
joinedAt
|
|
%s
|
|
`, playerODFields)
|
|
tribeFields = fmt.Sprintf(`
|
|
id
|
|
name
|
|
tag
|
|
totalMembers
|
|
totalVillages
|
|
points
|
|
allPoints
|
|
rank
|
|
exist
|
|
dominance
|
|
createdAt
|
|
%s
|
|
`, commonODFields)
|
|
villageFields = `
|
|
id
|
|
name
|
|
bonus
|
|
points
|
|
x
|
|
y
|
|
`
|
|
langVersionFields = `
|
|
tag
|
|
name
|
|
host
|
|
timezone
|
|
`
|
|
)
|
|
|
|
type SDK struct {
|
|
url string
|
|
client *client.Client
|
|
httpClient *http.Client
|
|
LangVersions *LangVersions
|
|
Servers *Servers
|
|
Players *Players
|
|
Tribes *Tribes
|
|
Villages *Villages
|
|
LiveEnnoblements *LiveEnnoblements
|
|
}
|
|
|
|
func New(url string) *SDK {
|
|
sdk := &SDK{
|
|
url: url,
|
|
httpClient: &http.Client{
|
|
Timeout: 10 * time.Second,
|
|
},
|
|
}
|
|
sdk.client = client.New(http.HandlerFunc(sdk.doRequest))
|
|
sdk.LangVersions = &LangVersions{sdk}
|
|
sdk.Servers = &Servers{sdk}
|
|
sdk.Players = &Players{sdk}
|
|
sdk.Tribes = &Tribes{sdk}
|
|
sdk.Villages = &Villages{sdk}
|
|
sdk.LiveEnnoblements = &LiveEnnoblements{sdk}
|
|
return sdk
|
|
}
|
|
|
|
func (sdk *SDK) doRequest(w http.ResponseWriter, r *http.Request) {
|
|
resp, err := sdk.httpClient.Post(sdk.url, "application/json", r.Body)
|
|
if err != nil {
|
|
w.WriteHeader(400)
|
|
w.Write([]byte(err.Error()))
|
|
return
|
|
}
|
|
defer resp.Body.Close()
|
|
body, err := ioutil.ReadAll(resp.Body)
|
|
if err != nil {
|
|
w.WriteHeader(400)
|
|
w.Write([]byte(err.Error()))
|
|
return
|
|
}
|
|
w.WriteHeader(resp.StatusCode)
|
|
w.Write(body)
|
|
}
|