package ovrstat import ( "strings" "encoding/json" "net/http" "fmt" "net/url" ) type OvrStatApi struct { Client *http.Client URL *url.URL } func New(apiUrl string) *OvrStatApi { u, err := url.Parse(apiUrl) if err != nil { return nil } return &OvrStatApi{Client: &http.Client{}, URL: u} } func (s *OvrStatApi) FetchProfile(platform, region, battletag string) (*OwApiResponse, error) { res, err := s.Client.Get(fmt.Sprintf("%s/v1/stats/%s/%s/%s/profile", s.URL, platform, region, strings.Replace(battletag, "#", "-", -1))) if err != nil { return nil, err } defer res.Body.Close() var r OwApiResponse if err := json.NewDecoder(res.Body).Decode(&r); err != nil { return nil, err } return &r, nil } func (s *OvrStatApi) FetchHeroStats(platform, region, battletag string, heroes []string) (*OwApiResponse, error) { res, err := s.Client.Get(fmt.Sprintf("%s/v1/stats/%s/%s/%s/heroes/%s", s.URL, platform, region, strings.Replace(battletag, "#", "-", -1), strings.Join(heroes, ","))) if err != nil { return nil, err } defer res.Body.Close() var r OwApiResponse if err := json.NewDecoder(res.Body).Decode(&r); err != nil { return nil, err } return &r, nil }