From 80c6013b86fb963ddde8c9d1202b89870e5640ac Mon Sep 17 00:00:00 2001 From: Patrick Fairbank Date: Sat, 23 Sep 2017 22:25:36 -0700 Subject: [PATCH] Add API to get alliances. --- web/api.go | 26 ++++++++++++++++++++++++++ web/api_test.go | 27 ++++++++++++++++++++++++++- web/web.go | 1 + 3 files changed, 53 insertions(+), 1 deletion(-) diff --git a/web/api.go b/web/api.go index ea70156..95b061a 100644 --- a/web/api.go +++ b/web/api.go @@ -162,3 +162,29 @@ func (web *Web) rankingsApiHandler(w http.ResponseWriter, r *http.Request) { return } } + +// Generates a JSON dump of the alliances. +func (web *Web) alliancesApiHandler(w http.ResponseWriter, r *http.Request) { + if !web.userIsReader(w, r) { + return + } + + alliances, err := web.arena.Database.GetAllAlliances() + if err != nil { + handleWebErr(w, err) + return + } + + jsonData, err := json.MarshalIndent(alliances, "", " ") + if err != nil { + handleWebErr(w, err) + return + } + + w.Header().Set("Content-Type", "application/json") + _, err = w.Write(jsonData) + if err != nil { + handleWebErr(w, err) + return + } +} diff --git a/web/api_test.go b/web/api_test.go index b3d3251..70cca40 100644 --- a/web/api_test.go +++ b/web/api_test.go @@ -79,7 +79,7 @@ func TestRankingsApi(t *testing.T) { assert.Equal(t, "29", rankingsData.HighestPlayedMatch) } -func TestSponsorSlides(t *testing.T) { +func TestSponsorSlidesApi(t *testing.T) { web := setupTestWeb(t) slide1 := model.SponsorSlide{1, "subtitle", "line1", "line2", "image", 2} @@ -98,3 +98,28 @@ func TestSponsorSlides(t *testing.T) { assert.Equal(t, slide2, sponsorSlides[1]) } } + +func TestAlliancesApi(t *testing.T) { + web := setupTestWeb(t) + + model.BuildTestAlliances(web.arena.Database) + + recorder := web.getHttpResponse("/api/alliances") + assert.Equal(t, 200, recorder.Code) + assert.Equal(t, "application/json", recorder.HeaderMap["Content-Type"][0]) + var alliances [][]model.AllianceTeam + err := json.Unmarshal([]byte(recorder.Body.String()), &alliances) + assert.Nil(t, err) + if assert.Equal(t, 2, len(alliances)) { + if assert.Equal(t, 4, len(alliances[0])) { + assert.Equal(t, 254, alliances[0][0].TeamId) + assert.Equal(t, 469, alliances[0][1].TeamId) + assert.Equal(t, 2848, alliances[0][2].TeamId) + assert.Equal(t, 74, alliances[0][3].TeamId) + } + if assert.Equal(t, 2, len(alliances[1])) { + assert.Equal(t, 1718, alliances[1][0].TeamId) + assert.Equal(t, 2451, alliances[1][1].TeamId) + } + } +} diff --git a/web/web.go b/web/web.go index e9594cd..dea1904 100644 --- a/web/web.go +++ b/web/web.go @@ -158,6 +158,7 @@ func (web *Web) newHandler() http.Handler { router.HandleFunc("/api/matches/{type}", web.matchesApiHandler).Methods("GET") router.HandleFunc("/api/rankings", web.rankingsApiHandler).Methods("GET") router.HandleFunc("/api/sponsor_slides", web.sponsorSlidesApiHandler).Methods("GET") + router.HandleFunc("/api/alliances", web.alliancesApiHandler).Methods("GET") router.HandleFunc("/match_play", web.matchPlayHandler).Methods("GET") router.HandleFunc("/match_play/{matchId}/load", web.matchPlayLoadHandler).Methods("GET") router.HandleFunc("/match_play/{matchId}/show_result", web.matchPlayShowResultHandler).Methods("GET")