// Samples requests a list of example event data. func (c *Client) EventSamples(types *[]string) (*events.Events, error) { url, err := url.Parse(fmt.Sprintf(messageEventsSamplesPathFormat, c.Config.BaseUrl, c.Config.ApiVersion)) if err != nil { return nil, err } // Filter out types. if types != nil { // validate types for _, etype := range *types { if !events.ValidEventType(etype) { return nil, fmt.Errorf("Invalid event type [%s]", etype) } } // get the query string object so we can modify it q := url.Query() // add the requested events and re-encode q.Set("events", strings.Join(*types, ",")) url.RawQuery = q.Encode() } // Send off our request res, err := c.HttpGet(url.String()) if err != nil { return nil, err } // Assert that we got a JSON Content-Type back if err = res.AssertJson(); err != nil { return nil, err } // Get the Content bodyBytes, err := res.ReadBody() if err != nil { return nil, err } var events events.Events err = json.Unmarshal(bodyBytes, &events) if err != nil { return nil, err } return &events, nil }
// Samples requests a list of example event data. func (c *Client) EventSamples(types *[]string) (*[]events.Event, error) { // append any requested event types to path var url string path := fmt.Sprintf(messageEventsPathFormat, c.Config.ApiVersion) if types == nil { url = fmt.Sprintf("%s%s/events/samples", c.Config.BaseUrl, path) } else { // validate types for _, etype := range *types { if !events.ValidEventType(etype) { return nil, fmt.Errorf("Invalid event type [%s]", etype) } } // break up the url into a net.URL object u, err := URL.Parse(fmt.Sprintf("%s%s/events/samples", c.Config.BaseUrl, path)) if err != nil { return nil, err } // get the query string object so we can modify it q := u.Query() // add the requested events and re-encode q.Set("events", strings.Join(*types, ",")) u.RawQuery = q.Encode() url = u.String() } // Send off our request res, err := c.HttpGet(url) if err != nil { return nil, err } // Assert that we got a JSON Content-Type back if err = res.AssertJson(); err != nil { return nil, err } // Get the Content bodyBytes, err := res.ReadBody() if err != nil { return nil, err } /*// DEBUG err = iou.WriteFile("./events.json", bodyBytes, 0644) if err != nil { return nil, err } */ // Parse expected response structure resMap := map[string][]*json.RawMessage{} err = json.Unmarshal(bodyBytes, &resMap) if err != nil { // FIXME: better error message return nil, err } // If the key "results" isn't present, something bad happened. results, ok := resMap["results"] if !ok { // FIXME: better error message return nil, fmt.Errorf("no results!") } return ParseEvents(results) }