in extension/client.go [130:154]
func (e *Client) NextEvent(ctx context.Context) (*NextEventResponse, error) {
const action = "/event/next"
url := e.baseURL + action
httpReq, err := http.NewRequestWithContext(ctx, http.MethodGet, url, http.NoBody)
if err != nil {
return nil, fmt.Errorf("failed to create next event request: %w", err)
}
httpReq.Header.Set(extensionIdentiferHeader, e.ExtensionID)
httpReq.Header.Set("User-Agent", version.UserAgent)
httpRes, err := e.httpClient.Do(httpReq)
if err != nil {
return nil, fmt.Errorf("next event request failed: %w", err)
}
defer httpRes.Body.Close()
if httpRes.StatusCode != http.StatusOK {
return nil, fmt.Errorf("next event request failed with status %s", httpRes.Status)
}
res := NextEventResponse{}
if err := json.NewDecoder(httpRes.Body).Decode(&res); err != nil {
return nil, fmt.Errorf("failed to decode next event response body: %w", err)
}
return &res, nil
}