ovrstat-api/ovrstat.go

60 lines
1.2 KiB
Go
Raw Normal View History

2017-05-09 02:32:00 +00:00
package ovrstat
import (
"strings"
"encoding/json"
"net/http"
"fmt"
"net/url"
2017-05-09 02:32:00 +00:00
)
type OvrStatApi struct {
Client *http.Client
URL *url.URL
2017-05-09 02:32:00 +00:00
}
2017-05-09 03:06:48 +00:00
func New(apiUrl string) *OvrStatApi {
u, err := url.Parse(apiUrl)
if err != nil {
return nil
}
return &OvrStatApi{Client: &http.Client{}, URL: u}
2017-05-09 02:32:00 +00:00
}
2017-05-28 01:23:12 +00:00
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)))
2017-05-09 02:32:00 +00:00
if err != nil {
return nil, err
}
defer res.Body.Close()
2017-05-28 01:23:12 +00:00
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
2017-05-09 02:32:00 +00:00
if err := json.NewDecoder(res.Body).Decode(&r); err != nil {
return nil, err
}
return &r, nil
}