Skip to content

Commit

Permalink
AS-8430: Update history API to accept timestamp query params
Browse files Browse the repository at this point in the history
  • Loading branch information
Priyadharshini Subramanian committed May 18, 2022
1 parent 6474f7c commit 37a97e7
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 11 deletions.
28 changes: 23 additions & 5 deletions notifications.go
Expand Up @@ -407,19 +407,37 @@ func (api *API) GetAvailableNotificationTypes(ctx context.Context, accountID str
return r, nil
}

// TimeRange is an object for filtering the alert history based on timestamp.
type TimeRange struct {
Since string `json:"since,omitempty"`
Before string `json:"before,omitempty"`
}

// AlertHistoryFilter is an object for filtering the alert history response from the api.
type AlertHistoryFilter struct {
TimeRange TimeRange
Pagination PaginationOptions
}

// ListNotificationHistory will return the history of alerts sent for
// a given account. The time period varies based on zone plan.
// Free, Biz, Pro = 30 days
// Ent = 90 days
//
// API Reference: https://api.cloudflare.com/#notification-history-list-history
func (api *API) ListNotificationHistory(ctx context.Context, accountID string, pageOpts PaginationOptions) ([]NotificationHistory, ResultInfo, error) {
func (api *API) ListNotificationHistory(ctx context.Context, accountID string, alertHistoryFilter AlertHistoryFilter) ([]NotificationHistory, ResultInfo, error) {
v := url.Values{}
if pageOpts.PerPage > 0 {
v.Set("per_page", strconv.Itoa(pageOpts.PerPage))
if alertHistoryFilter.Pagination.PerPage > 0 {
v.Set("per_page", strconv.Itoa(alertHistoryFilter.Pagination.PerPage))
}
if alertHistoryFilter.Pagination.Page > 0 {
v.Set("page", strconv.Itoa(alertHistoryFilter.Pagination.Page))
}
if alertHistoryFilter.TimeRange.Since != "" {
v.Set("since", alertHistoryFilter.TimeRange.Since)
}
if pageOpts.Page > 0 {
v.Set("page", strconv.Itoa(pageOpts.Page))
if alertHistoryFilter.TimeRange.Before != "" {
v.Set("before", alertHistoryFilter.TimeRange.Before)
}

baseURL := fmt.Sprintf("/accounts/%s/alerting/v3/history", accountID)
Expand Down
19 changes: 13 additions & 6 deletions notifications_test.go
Expand Up @@ -523,16 +523,23 @@ func TestListNotificationHistory(t *testing.T) {
}

expectedResultInfo := ResultInfo{
Page: 0,
PerPage: 25,
Count: 1,
Page: 0,
PerPage: 25,
Count: 1,
}

pageOptions := PaginationOptions{
PerPage: 25,
Page: 1,
Page: 1,
}

timeRange := TimeRange{
Since: time.Now().Add(-15 * time.Minute).Format(time.RFC3339),
Before: time.Now().Format(time.RFC3339),
}

historyFilters := AlertHistoryFilter{TimeRange: timeRange, Pagination: pageOptions}

alertHistory, err := json.Marshal(expected)
require.NoError(t, err)
require.NotNil(t, alertHistory)
Expand Down Expand Up @@ -560,9 +567,9 @@ func TestListNotificationHistory(t *testing.T) {

mux.HandleFunc("/accounts/"+testAccountID+"/alerting/v3/history", handler)

actualResult, actualResultInfo, err := client.ListNotificationHistory(context.Background(), testAccountID, pageOptions)
actualResult, actualResultInfo, err := client.ListNotificationHistory(context.Background(), testAccountID, historyFilters)
require.Nil(t, err)
require.NotNil(t, actualResult)
require.Equal(t, expected, actualResult)
require.Equal(t, expectedResultInfo, actualResultInfo)
}
}

0 comments on commit 37a97e7

Please sign in to comment.