Skip to content
This repository was archived by the owner on Sep 6, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,5 @@ _testmain.go
*.test
*.prof

/vendor
/vendor
/.idea/
32 changes: 0 additions & 32 deletions Godeps/Godeps.json

This file was deleted.

5 changes: 0 additions & 5 deletions Godeps/Readme

This file was deleted.

99 changes: 26 additions & 73 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ client, _ := zendesk.FromEnv(
zendesk.LoadConfiguration("./config/configuration.yml"),
)

u, err := client.ZendeskApi().CreateOrUpdateUser(user)
u, err := client.User().CreateOrUpdate(user)

if err != nil {
log.Println(err)
Expand All @@ -51,135 +51,88 @@ if err != nil {

## User functions available

#### GetUser
#### Get user
Return the user

```
client.ZendeskApi().GetUser(1)
client.User().GetById(1)
```

#### GetUsers
#### Get users
Return the list of all users

```
client.ZendeskApi().GetZendeskApi()
client.User().GetAll()
```

#### GetUsersByGroup
Return the list of all users in a group
#### Get agents
Return the list of all agents

```
client.ZendeskApi().GetUsersByGroup(4)
client.User().GetAllAgents(4)
```

#### CreateOrUpdateUser
#### Create or update user
Create or update a user

```
client.ZendeskApi().CreateOrUpdateUser(user)
client.User().CreateOrUpdate(user)
```

#### CreateUser
#### Create user
Create a new user

```
client.ZendeskApi().CreateUser(user)
client.User().Create(user)
```

#### UpdateUser
#### Update user
Update an existing user

```
client.ZendeskApi().UpdateUser(user)
client.User().Update(user)
```

#### DeleteUser
#### Delete user
Delete an existing user

```
client.ZendeskApi().DeleteUser(1)
client.User().Delete(1)
```

## Ticket function available

#### GetTicket
#### Get ticket
Return the ticket

```
client.ZendeskApi().GetTicket(1)
client.Ticket().GetById(1)
```

#### GetTickets
#### Get all tickets
Return the list of all tickets

```
client.ZendeskApi().GetTickets()
client.Ticket().GetAll()
```

#### GetRecentTickets
Return the recent tickets

```
client.ZendeskApi().GetRecentTickets()
```

#### GetTicketsFromOrganization
Return the tickets from an organization

```
client.ZendeskApi().GetTicketsFromOrganization(10)
```

#### GetManyTickets
Return a list of tickets

```
client.ZendeskApi().GetManyTickets(int[]{1, 2, 3, 5})
```

#### GetRequestedTicketsFromUser
Return the tickets requests by an user

```
client.ZendeskApi().GetRequestedTicketsFromUser(2)
```

#### GetCcdTicketsFromUser
```
client.ZendeskApi().GetCcdTicketsFromUser(2)
```

#### GetAssignedTicketsFromUser
Return the tickets assigned from user

```
client.ZendeskApi().GetAssignedTicketsFromUser(2)
```

#### CreateTicket
#### Create ticket
Create a new ticket

```
client.ZendeskApi().CreateTicket(ticket)
client.Ticket().Create(ticket)
```

#### UpdateTicket
#### Update ticket
Update a ticket

```
client.ZendeskApi().UpdateTicket(ticket)
```

#### UpdateTicketMarkAsSpam
Update a ticket to mark as spam

```
client.ZendeskApi().UpdateTicketMarkAsSpam(1)
client.Ticket().Create(ticket)
```

#### DeleteTicket
#### Delete ticket
Delete an existing ticket

```
client.ZendeskApi().DeleteTicket(1)
client.Ticket().Delete(1)
```
4 changes: 2 additions & 2 deletions adapter.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package zendesk

import "gopkg.in/resty.v0"
import "github.com/go-resty/resty/v2"

type ZendeskApi interface {
GetById(id int) (interface{}, error)
Expand All @@ -14,4 +14,4 @@ type ZendeskApi interface {
// Parse response
parseSingleObject(response *resty.Response) interface{}
parseMultiObjects(response *resty.Response) []interface{}
}
}
12 changes: 6 additions & 6 deletions builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,23 @@ package zendesk

import (
"fmt"
"io/ioutil"

"github.com/go-resty/resty/v2"
"gopkg.in/yaml.v2"
"gopkg.in/resty.v0"
"io/ioutil"
)

func FromToken(config ZendeskConfiguration) Client {
username := fmt.Sprintf("%s/token", config.Email)

restyClient := resty.SetBasicAuth(username, config.Token)
restyClient := resty.New()
restyClient.SetBasicAuth(username, config.Token)
restyClient.SetHeader("Accept", "application/json")
restyClient.SetHeader("Content-Type", "application/json")

return Client{
domain: config.Domain,
domain: config.Domain,
apiVersion: config.ApiVersion,
client: restyClient,
client: restyClient,
}
}

Expand Down
18 changes: 13 additions & 5 deletions client.go
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package zendesk

import (
"gopkg.in/resty.v0"
"fmt"
"encoding/json"
"fmt"
"github.com/go-resty/resty/v2"
)

type Client struct {
domain string
client *resty.Client
domain string
client *resty.Client
apiVersion string
}

Expand All @@ -20,6 +20,14 @@ func (c Client) Ticket() TicketApiHandler {
return TicketApiHandler{c}
}

func (c Client) PhoneNumber() PhoneNumberApiHandler {
return PhoneNumberApiHandler{c}
}

func (c Client) Comment() CommentApiHandler {
return CommentApiHandler{c}
}

func (c Client) toFullUrl(path string) string {
return fmt.Sprintf("https://%v.zendesk.com/api/%s/%s", c.domain, c.apiVersion, path)
}
Expand Down Expand Up @@ -60,4 +68,4 @@ func (c Client) delete(path string) (*resty.Response, error) {

func (c Client) parseResponseToInterface(response *resty.Response, v interface{}) {
json.Unmarshal(response.Body(), &v)
}
}
35 changes: 35 additions & 0 deletions comment.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package zendesk

import (
"fmt"
"github.com/go-resty/resty/v2"
)

type CommentApiHandler struct {
client Client
}

type MultipleComment struct {
Response []Comment `json:"comments"`
}

func (c CommentApiHandler) GetForTicket(ticketId int) ([]Comment, error) {
response, err := c.client.get(
fmt.Sprintf("/tickets/%d/comments.json", ticketId),
nil,
)

if err != nil {
return nil, err
}

return c.parseMultiObjects(response), err
}

func (c CommentApiHandler) parseMultiObjects(response *resty.Response) []Comment {
var object MultipleComment

c.client.parseResponseToInterface(response, &object)

return object.Response
}
7 changes: 7 additions & 0 deletions comment_struct.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package zendesk

type Comment struct {
Id int64 `json:"id,omitempty"`
AuthorId int64 `json:"author_id,omitempty"`
CreatedAt string `json:"created_at,omitempty"`
}
2 changes: 1 addition & 1 deletion global_struct.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@ type JobStatus struct {
Status string `json:"status,omitempty"`
Message string `json:"mesage,omitempty"`
Results string `json:"results,omitempty"`
}
}
17 changes: 17 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
module github.com/gomaps/zendesk-go

go 1.18

require (
github.com/go-resty/resty/v2 v2.7.0
github.com/ttacon/libphonenumber v1.2.1
gopkg.in/yaml.v2 v2.4.0
)

require (
github.com/go-resty/resty/v2 v2.7.0
github.com/golang/protobuf v1.5.2 // indirect
github.com/ttacon/builder v0.0.0-20170518171403-c099f663e1c2 // indirect
golang.org/x/net v0.0.0-20211029224645-99673261e6eb // indirect
google.golang.org/protobuf v1.26.0 // indirect
)
Loading