From 7da0bf5718e6178a96dbfa402b42fd3235bfe32f Mon Sep 17 00:00:00 2001 From: JulianToledano Date: Thu, 1 Apr 2021 20:07:27 +0200 Subject: [PATCH] ADD: events endpoints --- endpoints.go | 2 +- events.go | 63 +++++++++++++++++++++++++++++++++++++++++++++ events/countries.go | 10 +++++++ events/events.go | 23 +++++++++++++++++ events/types.go | 6 +++++ test/events_test.go | 34 ++++++++++++++++++++++++ 6 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 events.go create mode 100644 events/countries.go create mode 100644 events/events.go create mode 100644 events/types.go create mode 100644 test/events_test.go diff --git a/endpoints.go b/endpoints.go index eed3c81..319f385 100644 --- a/endpoints.go +++ b/endpoints.go @@ -14,7 +14,7 @@ var ( indexesURL = fmt.Sprintf("%s/indexes", baseURL) derivativesURL = fmt.Sprintf("%s/derivatices", baseURL) statusUpdatesURL = fmt.Sprintf("%s/status_updates", baseURL) - eventsUpdatesURL = fmt.Sprintf("%s/events", baseURL) + eventsURL = fmt.Sprintf("%s/events", baseURL) exchangeRatesURL = fmt.Sprintf("%s/exchange_rates", baseURL) trendingURL = fmt.Sprintf("%s/trending", baseURL) globalURL = fmt.Sprintf("%s/global", baseURL) diff --git a/events.go b/events.go new file mode 100644 index 0000000..96c77dc --- /dev/null +++ b/events.go @@ -0,0 +1,63 @@ +package goingecko + +import ( + "encoding/json" + "fmt" + "net/url" + "strconv" + + "github.com/JulianToledano/goingecko/events" +) + +func (c *Client) Events(countryCode, eventType, page, from, to string, onlyUpcoming bool) (*events.Events, error) { + params := url.Values{} + params.Add("country_code", countryCode) + params.Add("type", eventType) + params.Add("page", page) + params.Add("upcoming_events_only", strconv.FormatBool(onlyUpcoming)) + params.Add("from_date", from) + params.Add("to_date", to) + + rUrl := fmt.Sprintf("%s?%s", eventsURL, params.Encode()) + resp, err := c.MakeReq(rUrl) + if err != nil { + return nil, err + } + + var data *events.Events + err = json.Unmarshal([]byte(resp), &data) + if err != nil { + return nil, err + } + return data, nil +} + +func (c *Client) EventsCountries() (*events.Country, error) { + rUrl := fmt.Sprintf("%s/%s", eventsURL, "countries") + resp, err := c.MakeReq(rUrl) + if err != nil { + return nil, err + } + + var data *events.Country + err = json.Unmarshal([]byte(resp), &data) + if err != nil { + return nil, err + } + return data, nil +} + +func (c *Client) EventsTypes() (*events.Types, error) { + rUrl := fmt.Sprintf("%s/%s", eventsURL, "types") + resp, err := c.MakeReq(rUrl) + if err != nil { + return nil, err + } + + var data *events.Types + err = json.Unmarshal([]byte(resp), &data) + if err != nil { + return nil, err + } + return data, nil +} diff --git a/events/countries.go b/events/countries.go new file mode 100644 index 0000000..ab646cf --- /dev/null +++ b/events/countries.go @@ -0,0 +1,10 @@ +package events + +type Country struct { + Data []CountryData `json:"data"` +} + +type CountryData struct { + Country string `json:"country"` + Code string `json:"code"` +} diff --git a/events/events.go b/events/events.go new file mode 100644 index 0000000..0cf1cd1 --- /dev/null +++ b/events/events.go @@ -0,0 +1,23 @@ +package events + +type Events struct { + Data []event `json:"data"` + Count int32 `json:"count"` + Page int32 `json:"page"` +} + +type event struct { + Type string `json:"type"` + Title string `json:"title"` + Description string `json:"description"` + Organizer string `json:"organizer"` + StartDate string `json:"start_date"` + EndDate string `json:"end_date"` + Website string `json:"website"` + Email string `json:"email"` + Venue string `json:"venue"` + Address string `json:"address"` + City string `json:"city"` + Country string `json:"country"` + Screenshot string `json:"screenshot"` +} diff --git a/events/types.go b/events/types.go new file mode 100644 index 0000000..d10c539 --- /dev/null +++ b/events/types.go @@ -0,0 +1,6 @@ +package events + +type Types struct { + Data []string `json:"data"` + Count int16 `json:"count"` +} diff --git a/test/events_test.go b/test/events_test.go new file mode 100644 index 0000000..7ec284f --- /dev/null +++ b/test/events_test.go @@ -0,0 +1,34 @@ +package test + +import ( + "testing" + + "github.com/JulianToledano/goingecko" +) + +func TestEvents(t *testing.T) { + cgClient := goingecko.NewClient(nil) + + r, _ := cgClient.Events("DE", "Meetup", "1", "2015-01-01", "2021-12-31", false) + if r == nil { + t.Errorf("Error") + } +} + +func TestEventsCountries(t *testing.T) { + cgClient := goingecko.NewClient(nil) + + r, _ := cgClient.EventsCountries() + if r == nil { + t.Errorf("Error") + } +} + +func TestEventsTypes(t *testing.T) { + cgClient := goingecko.NewClient(nil) + + r, _ := cgClient.EventsTypes() + if r == nil { + t.Errorf("Error") + } +}