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 b515824 commit 56ad0f3
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 6 deletions.
28 changes: 23 additions & 5 deletions notifications.go
Expand Up @@ -405,19 +405,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
9 changes: 8 additions & 1 deletion notifications_test.go
Expand Up @@ -531,6 +531,13 @@ func TestListNotificationHistory(t *testing.T) {
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 @@ -558,7 +565,7 @@ 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)
Expand Down

0 comments on commit 56ad0f3

Please sign in to comment.