Skip to content

Commit 630f160

Browse files
authored
Merge pull request #127 from Staffbase/responder-alerts
Implement get-responder-alerts API endpoint
2 parents fe35b34 + e728676 commit 630f160

File tree

4 files changed

+103
-0
lines changed

4 files changed

+103
-0
lines changed

incident/incident.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,3 +178,12 @@ func (c *Client) ListNotes(context context.Context, request *ListNotesRequest) (
178178
}
179179
return result, nil
180180
}
181+
182+
func (c *Client) GetResponderAlerts(context context.Context, request *GetResponderAlertsRequest) (*GetResponderAlertsResult, error) {
183+
result := &GetResponderAlertsResult{}
184+
err := c.client.Exec(context, request, result)
185+
if err != nil {
186+
return nil, err
187+
}
188+
return result, nil
189+
}

incident/incident_test.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -502,3 +502,37 @@ func TestResponders_Validate(t *testing.T) {
502502
err = validateResponders(Responders)
503503
assert.Nil(t, err)
504504
}
505+
506+
func TestGetResponderAlertsRequest_Endpoint(t *testing.T) {
507+
request := &GetResponderAlertsRequest{
508+
Id: "adea9e79-5527-4e49-b345-e55ae180ae59",
509+
Identifier: Id,
510+
}
511+
endpoint := request.ResourcePath()
512+
params := request.RequestParams()
513+
assert.Equal(t, "/v1/incidents/adea9e79-5527-4e49-b345-e55ae180ae59/responder-alert-ids", endpoint)
514+
assert.Equal(t, "id", params["identifierType"])
515+
}
516+
517+
func TestGetResponderAlertsRequest_GetParams(t *testing.T) {
518+
request := &GetResponderAlertsRequest{
519+
Limit: 10,
520+
Offset: 30,
521+
Order: "desc",
522+
Direction: "next",
523+
}
524+
params := request.RequestParams()
525+
assert.Equal(t, "10", params["limit"])
526+
assert.Equal(t, "30", params["offset"])
527+
assert.Equal(t, "next", params["direction"])
528+
assert.Equal(t, "desc", params["order"])
529+
}
530+
531+
func TestGetResponderAlertsRequest_Validate(t *testing.T) {
532+
request := &GetResponderAlertsRequest{}
533+
err := request.Validate()
534+
assert.Equal(t, err.Error(), errors.New("Incident ID cannot be blank.").Error())
535+
request.Id = "adea9e79-5527-4e49-b345-e55ae180ae59"
536+
err = request.Validate()
537+
assert.Nil(t, err)
538+
}

incident/request.go

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -772,6 +772,61 @@ func (r *ListNotesRequest) RequestParams() map[string]string {
772772
return params
773773
}
774774

775+
type GetResponderAlertsRequest struct {
776+
client.BaseRequest
777+
Identifier IdentifierType
778+
Id string
779+
Limit int
780+
Offset int
781+
Order Order
782+
Direction string
783+
}
784+
785+
func (r *GetResponderAlertsRequest) Validate() error {
786+
if r.Id == "" {
787+
return errors.New("Incident ID cannot be blank.")
788+
}
789+
if r.Identifier != "" && r.Identifier != Id && r.Identifier != Tiny {
790+
return errors.New("Identifier type should be one of these: 'Id', 'Tiny' or empty.")
791+
}
792+
return nil
793+
}
794+
795+
func (r *GetResponderAlertsRequest) ResourcePath() string {
796+
return "/v1/incidents/" + r.Id + "/responder-alert-ids"
797+
}
798+
799+
func (r *GetResponderAlertsRequest) Method() string {
800+
return http.MethodGet
801+
}
802+
803+
func (r *GetResponderAlertsRequest) RequestParams() map[string]string {
804+
805+
params := make(map[string]string)
806+
807+
if r.Identifier == Tiny {
808+
params["identifierType"] = "tiny"
809+
} else {
810+
params["identifierType"] = "id"
811+
}
812+
813+
if r.Limit != 0 {
814+
params["limit"] = strconv.Itoa(r.Limit)
815+
}
816+
if r.Offset != 0 {
817+
params["offset"] = strconv.Itoa(r.Offset)
818+
}
819+
if r.Direction != "" {
820+
params["direction"] = r.Direction
821+
822+
}
823+
if r.Order != "" {
824+
params["order"] = string(r.Order)
825+
}
826+
827+
return params
828+
}
829+
775830
type IdentifierType string
776831
type ResponderType string
777832
type Priority string

incident/result.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,8 @@ type Paging struct {
8080
First string `json:"first"`
8181
Last string `json:"last"`
8282
}
83+
84+
type GetResponderAlertsResult struct {
85+
client.ResultMetadata
86+
AlertIds []string `json:"data"`
87+
}

0 commit comments

Comments
 (0)