updated EventsForMatch and MatchesForPlayer to use the new methods
This commit is contained in:
parent
736272dfea
commit
5400089684
@ -23,29 +23,34 @@ func (h *Halo) metadataRequest(datatype, id string) ([]byte, error) {
|
|||||||
}
|
}
|
||||||
q := url.Query()
|
q := url.Query()
|
||||||
url.RawQuery = q.Encode()
|
url.RawQuery = q.Encode()
|
||||||
response := h.sendRequest(url.String())
|
response, _ := h.sendRequest(url.String())
|
||||||
return response, nil
|
return response, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *Halo) sendRequest(url string) []byte {
|
func (h *Halo) sendRequest(url string) ([]byte, error) {
|
||||||
request, err := http.NewRequest("GET", url, nil)
|
request, err := http.NewRequest("GET", url, nil)
|
||||||
checkErr(err)
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
request.Header.Set("Ocp-Apim-Subscription-Key", h.apikey)
|
request.Header.Set("Ocp-Apim-Subscription-Key", h.apikey)
|
||||||
|
|
||||||
response, err := http.DefaultClient.Do(request)
|
response, err := http.DefaultClient.Do(request)
|
||||||
checkErr(err)
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
defer response.Body.Close()
|
defer response.Body.Close()
|
||||||
|
|
||||||
// Return the URL of the image for SpartanImage and EmblemImage
|
// Return the URL of the image for SpartanImage and EmblemImage
|
||||||
if url != response.Request.URL.String() {
|
if url != response.Request.URL.String() {
|
||||||
return []byte(response.Request.URL.String())
|
return []byte(response.Request.URL.String()), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// If its not SpartanImage or EmblemImage return the body
|
// If its not SpartanImage or EmblemImage return the body
|
||||||
contents, err := ioutil.ReadAll(response.Body)
|
contents, err := ioutil.ReadAll(response.Body)
|
||||||
checkErr(err)
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
return contents
|
return contents, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func sendRequest(url string) []byte {
|
func sendRequest(url string) []byte {
|
||||||
@ -81,6 +86,6 @@ func verifyValidID(ID, name string) {
|
|||||||
re, _ := regexp.Compile("^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$")
|
re, _ := regexp.Compile("^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$")
|
||||||
valid := re.MatchString(ID)
|
valid := re.MatchString(ID)
|
||||||
if valid == false {
|
if valid == false {
|
||||||
fmt.Printf("%s is not a valid %s\n", ID, name)
|
log.Fatal("%s is not a valid %s", ID, name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,23 +1,38 @@
|
|||||||
package halo
|
package halo
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log"
|
||||||
"net/url"
|
"net/url"
|
||||||
)
|
)
|
||||||
|
|
||||||
func EventsForMatch(baseurl, title, matchid string) []byte {
|
func (h *Halo) EventsForMatch(matchid string) EventsForMatchStruct {
|
||||||
verifyValidID(matchid, "Match ID")
|
verifyValidID(matchid, "Match ID")
|
||||||
url, err := url.Parse(fmt.Sprintf("%s/stats/%s/matches/%s/events", baseurl, title, matchid))
|
var j EventsForMatchStruct
|
||||||
checkErr(err)
|
url, err := url.Parse(fmt.Sprintf("%s/stats/%s/matches/%s/events", h.baseurl, h.title, matchid))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal("EventsForMatch URL Parse Failed: ", err)
|
||||||
|
}
|
||||||
q := url.Query()
|
q := url.Query()
|
||||||
url.RawQuery = q.Encode()
|
url.RawQuery = q.Encode()
|
||||||
response := sendRequest(url.String())
|
jsonObject, err := h.sendRequest(url.String())
|
||||||
return response
|
if err != nil {
|
||||||
|
log.Fatal("EventsForMatch Failed: ", err)
|
||||||
|
}
|
||||||
|
err = json.Unmarshal(jsonObject, &j)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal("Failure to unmarshal json: ", err)
|
||||||
|
}
|
||||||
|
return j
|
||||||
}
|
}
|
||||||
|
|
||||||
func MatchesForPlayer(baseurl, title, player, modes string, start, count int) []byte {
|
func (h *Halo) MatchesForPlayer(player, modes string, start, count int) MatchesForPlayerStruct {
|
||||||
url, err := url.Parse(fmt.Sprintf("%s/stats/%s/players/%s/matches", baseurl, title, player))
|
var j MatchesForPlayerStruct
|
||||||
checkErr(err)
|
url, err := url.Parse(fmt.Sprintf("%s/stats/%s/players/%s/matches", h.baseurl, h.title, player))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal("MatchesForPlayer URL Parse Failed: ", err)
|
||||||
|
}
|
||||||
q := url.Query()
|
q := url.Query()
|
||||||
|
|
||||||
if modes != "" {
|
if modes != "" {
|
||||||
@ -30,8 +45,15 @@ func MatchesForPlayer(baseurl, title, player, modes string, start, count int) []
|
|||||||
q.Set("count", string(count))
|
q.Set("count", string(count))
|
||||||
}
|
}
|
||||||
url.RawQuery = q.Encode()
|
url.RawQuery = q.Encode()
|
||||||
response := sendRequest(url.String())
|
jsonObject, err := h.sendRequest(url.String())
|
||||||
return response
|
if err != nil {
|
||||||
|
log.Fatal("MatchesForPlayer Failed: ", err)
|
||||||
|
}
|
||||||
|
err = json.Unmarshal(jsonObject, &j)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal("Failure to unmarshal json: ", err)
|
||||||
|
}
|
||||||
|
return j
|
||||||
}
|
}
|
||||||
|
|
||||||
func PlayerLeaderboard(baseurl, title, seasonid, playlistid string, count int) []byte {
|
func PlayerLeaderboard(baseurl, title, seasonid, playlistid string, count int) []byte {
|
||||||
|
@ -12,7 +12,6 @@ type CampaignMissionsStruct []struct {
|
|||||||
ContentID string `json:"contentId"`
|
ContentID string `json:"contentId"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// This one works!
|
|
||||||
type CommendationsStruct []struct {
|
type CommendationsStruct []struct {
|
||||||
Type string `json:"type"`
|
Type string `json:"type"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
@ -59,7 +58,6 @@ type CommendationsStruct []struct {
|
|||||||
ContentID string `json:"contentId"`
|
ContentID string `json:"contentId"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// This one works!
|
|
||||||
type CsrDesignationsStruct []struct {
|
type CsrDesignationsStruct []struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
BannerImageURL string `json:"bannerImageUrl"`
|
BannerImageURL string `json:"bannerImageUrl"`
|
||||||
|
2
main.go
2
main.go
@ -54,7 +54,7 @@ func main() {
|
|||||||
//fmt.Println(h.GameVariants(sampleGameVariantID))
|
//fmt.Println(h.GameVariants(sampleGameVariantID))
|
||||||
//fmt.Println(h.MapVariants(sampleMapVariantsID))
|
//fmt.Println(h.MapVariants(sampleMapVariantsID))
|
||||||
//fmt.Println(h.Requisitions(sampleRequisitionID))
|
//fmt.Println(h.Requisitions(sampleRequisitionID))
|
||||||
fmt.Println(h.RequisitionPacks(sampleRequisitionPacksID))
|
fmt.Println(h.MatchesForPlayer(sampleGamertag, "", 0, 0))
|
||||||
// Uncomment any of the below for sample output.
|
// Uncomment any of the below for sample output.
|
||||||
|
|
||||||
// Metadata
|
// Metadata
|
||||||
|
Loading…
Reference in New Issue
Block a user