85 lines
2.2 KiB
Go
85 lines
2.2 KiB
Go
package gamedata
|
|
|
|
import "fmt"
|
|
|
|
const (
|
|
ConnectedRealmsIndexEndpoint = "/data/wow/connected-realm/index"
|
|
ConnectedRealmEndpoint = "/data/wow/connected-realm/%d"
|
|
ConnectedRealmSearchEndpoint = "/data/wow/search/connected-realm"
|
|
)
|
|
|
|
type Realm struct {
|
|
ID int `json:"id"`
|
|
Name localized `json:"name"`
|
|
Region struct {
|
|
Name localized `json:"name"`
|
|
ID int `json:"id"`
|
|
} `json:"region"`
|
|
Category localized `json:"category"`
|
|
Locale string `json:"locale"`
|
|
Type struct {
|
|
Name localized `json:"name"`
|
|
Type string `json:"type"`
|
|
} `json:"type"`
|
|
Slug string `json:"slug"`
|
|
|
|
Timezone string `json:"timezone"`
|
|
Tournament bool `json:"is_tournament"`
|
|
}
|
|
|
|
type RealmSearchResult struct {
|
|
Key href `json:"key"`
|
|
Data struct {
|
|
Realms []Realm `json:"realms"`
|
|
ID int `json:"id"`
|
|
Queue bool `json:"has_queue"`
|
|
Status struct {
|
|
Name localized `json:"name"`
|
|
Type string `json:"type"`
|
|
} `json:"status"`
|
|
Population struct {
|
|
Name localized `json:"name"`
|
|
Type string `json:"type"`
|
|
} `json:"population"`
|
|
} `json:"data"`
|
|
}
|
|
|
|
type RealmStatusParams struct {
|
|
Status string
|
|
Timezone string
|
|
OrderBy string
|
|
Page int
|
|
}
|
|
|
|
type URLFormatterImpl struct{}
|
|
|
|
func (u URLFormatterImpl) FormatURL(baseURL, endpoint, namespace, region string, options interface{}) string {
|
|
o := options.(RealmStatusParams)
|
|
requestURL := fmt.Sprintf("%s%s?namespace=%s-%s", baseURL, endpoint, namespace, region)
|
|
requestURL = fmt.Sprintf("%s&status.type=%s&realms.timezone=%s&orderby=%s&_page=%d", requestURL, o.Status, o.Timezone, o.OrderBy, o.Page)
|
|
return requestURL
|
|
}
|
|
|
|
type localized struct {
|
|
IT string `json:"it_IT"`
|
|
RU string `json:"ru_RU"`
|
|
GB string `json:"en_GB"`
|
|
TW string `json:"zh_TW"`
|
|
KR string `json:"ko_KR"`
|
|
US string `json:"en_US"`
|
|
MX string `json:"es_MX"`
|
|
BR string `json:"pt_BR"`
|
|
ES string `json:"es_ES"`
|
|
CN string `json:"zh_CN"`
|
|
FR string `json:"fr_FR"`
|
|
DE string `json:"de_DE"`
|
|
}
|
|
|
|
type ConnectedRealmSearchAPI struct {
|
|
Page int `json:"page"`
|
|
PageSize int `json:"pageSize"`
|
|
MaxPageSize int `json:"maxPageSize"`
|
|
PageCount int `json:"pageCount"`
|
|
Results []RealmSearchResult `json:"results"`
|
|
}
|