Skip to content

Commit

Permalink
Merge 6fe8db1 into 00dba3b
Browse files Browse the repository at this point in the history
  • Loading branch information
nukosuke committed May 15, 2019
2 parents 00dba3b + 6fe8db1 commit d439beb
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 43 deletions.
40 changes: 20 additions & 20 deletions zendesk/mock/client.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

39 changes: 24 additions & 15 deletions zendesk/trigger.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package zendesk

import (
"context"
"encoding/json"
"fmt"
"time"
)

// TriggerCondition zendesk trigger condition
//
// ref: https://developer.zendesk.com/rest_api/docs/core/triggers#conditions-reference
type TriggerCondition struct {
Field string `json:"field"`
Expand All @@ -15,13 +17,15 @@ type TriggerCondition struct {
}

// TriggerAction is zendesk trigger action
//
// ref: https://developer.zendesk.com/rest_api/docs/core/triggers#actions
type TriggerAction struct {
Field string `json:"field"`
Value interface{} `json:"value"`
}

// Trigger is zendesk trigger JSON payload format
//
// ref: https://developer.zendesk.com/rest_api/docs/core/triggers#json-format
type Trigger struct {
ID int64 `json:"id,omitempty"`
Expand All @@ -40,22 +44,23 @@ type Trigger struct {

// TriggerAPI an interface containing all trigger related methods
type TriggerAPI interface {
GetTriggers() ([]Trigger, Page, error)
CreateTrigger(trigger Trigger) (Trigger, error)
GetTrigger(id int64) (Trigger, error)
UpdateTrigger(id int64, trigger Trigger) (Trigger, error)
DeleteTrigger(id int64) error
GetTriggers(ctx context.Context) ([]Trigger, Page, error)
CreateTrigger(ctx context.Context, trigger Trigger) (Trigger, error)
GetTrigger(ctx context.Context, id int64) (Trigger, error)
UpdateTrigger(ctx context.Context, id int64, trigger Trigger) (Trigger, error)
DeleteTrigger(ctx context.Context, id int64) error
}

// GetTriggers fetch trigger list
//
// ref: https://developer.zendesk.com/rest_api/docs/support/triggers#getting-triggers
func (z *Client) GetTriggers() ([]Trigger, Page, error) {
func (z *Client) GetTriggers(ctx context.Context) ([]Trigger, Page, error) {
var data struct {
Triggers []Trigger `json:"triggers"`
Page
}

body, err := z.Get("/triggers.json")
body, err := z.get(ctx, "/triggers.json")
if err != nil {
return []Trigger{}, Page{}, err
}
Expand All @@ -68,14 +73,15 @@ func (z *Client) GetTriggers() ([]Trigger, Page, error) {
}

// CreateTrigger creates new trigger
//
// ref: https://developer.zendesk.com/rest_api/docs/support/triggers#create-trigger
func (z *Client) CreateTrigger(trigger Trigger) (Trigger, error) {
func (z *Client) CreateTrigger(ctx context.Context, trigger Trigger) (Trigger, error) {
var data, result struct {
Trigger Trigger `json:"trigger"`
}
data.Trigger = trigger

body, err := z.Post("/triggers.json", data)
body, err := z.post(ctx, "/triggers.json", data)
if err != nil {
return Trigger{}, err
}
Expand All @@ -88,13 +94,14 @@ func (z *Client) CreateTrigger(trigger Trigger) (Trigger, error) {
}

// GetTrigger returns the specified trigger
//
// ref: https://developer.zendesk.com/rest_api/docs/support/triggers#getting-triggers
func (z *Client) GetTrigger(id int64) (Trigger, error) {
func (z *Client) GetTrigger(ctx context.Context, id int64) (Trigger, error) {
var result struct {
Trigger Trigger `json:"trigger"`
}

body, err := z.Get(fmt.Sprintf("/triggers/%d.json", id))
body, err := z.get(ctx, fmt.Sprintf("/triggers/%d.json", id))
if err != nil {
return Trigger{}, err
}
Expand All @@ -107,14 +114,15 @@ func (z *Client) GetTrigger(id int64) (Trigger, error) {
}

// UpdateTrigger updates the specified trigger and returns the updated one
//
// ref: https://developer.zendesk.com/rest_api/docs/support/triggers#update-trigger
func (z *Client) UpdateTrigger(id int64, trigger Trigger) (Trigger, error) {
func (z *Client) UpdateTrigger(ctx context.Context, id int64, trigger Trigger) (Trigger, error) {
var data, result struct {
Trigger Trigger `json:"trigger"`
}

data.Trigger = trigger
body, err := z.Put(fmt.Sprintf("/triggers/%d.json", id), data)
body, err := z.put(ctx, fmt.Sprintf("/triggers/%d.json", id), data)
if err != nil {
return Trigger{}, err
}
Expand All @@ -128,9 +136,10 @@ func (z *Client) UpdateTrigger(id int64, trigger Trigger) (Trigger, error) {
}

// DeleteTrigger deletes the specified trigger
//
// ref: https://developer.zendesk.com/rest_api/docs/support/triggers#delete-trigger
func (z *Client) DeleteTrigger(id int64) error {
err := z.Delete(fmt.Sprintf("/triggers/%d.json", id))
func (z *Client) DeleteTrigger(ctx context.Context, id int64) error {
err := z.delete(ctx, fmt.Sprintf("/triggers/%d.json", id))
if err != nil {
return err
}
Expand Down
16 changes: 8 additions & 8 deletions zendesk/trigger_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ func TestGetTriggers(t *testing.T) {
client := newTestClient(mockAPI)
defer mockAPI.Close()

triggers, _, err := client.GetTriggers()
triggers, _, err := client.GetTriggers(ctx)
if err != nil {
t.Fatalf("Failed to get triggers: %s", err)
}
Expand All @@ -26,7 +26,7 @@ func TestCreateTrigger(t *testing.T) {
client := newTestClient(mockAPI)
defer mockAPI.Close()

_, err := client.CreateTrigger(Trigger{})
_, err := client.CreateTrigger(ctx, Trigger{})
if err != nil {
t.Fatalf("Failed to send request to create trigger: %s", err)
}
Expand All @@ -37,7 +37,7 @@ func TestGetTrigger(t *testing.T) {
client := newTestClient(mockAPI)
defer mockAPI.Close()

trg, err := client.GetTrigger(123)
trg, err := client.GetTrigger(ctx, 123)
if err != nil {
t.Fatalf("Failed to get trigger: %s", err)
}
Expand All @@ -55,7 +55,7 @@ func TestGetTriggerFailure(t *testing.T) {
}))

c := newTestClient(mockAPI)
_, err := c.GetTrigger(1234)
_, err := c.GetTrigger(ctx, 1234)
if err == nil {
t.Fatal("Client did not return error when api failed")
}
Expand All @@ -66,7 +66,7 @@ func TestUpdateTrigger(t *testing.T) {
client := newTestClient(mockAPI)
defer mockAPI.Close()

trg, err := client.UpdateTrigger(123, Trigger{})
trg, err := client.UpdateTrigger(ctx, 123, Trigger{})
if err != nil {
t.Fatalf("Failed to get trigger: %s", err)
}
Expand All @@ -84,7 +84,7 @@ func TestUpdateTriggerFailure(t *testing.T) {
}))

c := newTestClient(mockAPI)
_, err := c.UpdateTrigger(1234, Trigger{})
_, err := c.UpdateTrigger(ctx, 1234, Trigger{})
if err == nil {
t.Fatal("Client did not return error when api failed")
}
Expand All @@ -97,7 +97,7 @@ func TestDeleteTrigger(t *testing.T) {
}))

c := newTestClient(mockAPI)
err := c.DeleteTrigger(1234)
err := c.DeleteTrigger(ctx, 1234)
if err != nil {
t.Fatalf("Failed to delete trigger: %s", err)
}
Expand All @@ -110,7 +110,7 @@ func TestDeleteTriggerFailure(t *testing.T) {
}))

c := newTestClient(mockAPI)
err := c.DeleteTrigger(1234)
err := c.DeleteTrigger(ctx, 1234)
if err == nil {
t.Fatal("Client did not return error when api failed")
}
Expand Down

0 comments on commit d439beb

Please sign in to comment.