Add Patch

Add AssignTicketToTeam
This commit is contained in:
Steven Polley 2018-07-09 20:48:02 -06:00
parent 8909e6f25e
commit b4d146e6e2
4 changed files with 42 additions and 4 deletions

View File

@ -20,6 +20,13 @@ type Request struct {
PageSize int PageSize int
} }
//Patch is a struct which holds the required fields to make a PATCH request
type Patch struct {
Op string `json:"op"`
Path string `json:"path"`
Value string `json:"value"`
}
//NewRequest is a function which takes the mandatory fields to perform a request to the CW API and returns a pointer to a Request struct //NewRequest is a function which takes the mandatory fields to perform a request to the CW API and returns a pointer to a Request struct
func (cw *Site) NewRequest(restAction, method string, body []byte) *Request { func (cw *Site) NewRequest(restAction, method string, body []byte) *Request {
req := Request{CW: cw, RestAction: restAction, Method: method, Body: body} req := Request{CW: cw, RestAction: restAction, Method: method, Body: body}

View File

@ -6,6 +6,7 @@ import (
"time" "time"
) )
//Calendar is a struct to hold calendar data extracted from JSON
type Calendar struct { type Calendar struct {
ID int `json:"id"` ID int `json:"id"`
Name string `json:"name"` Name string `json:"name"`
@ -32,6 +33,7 @@ type Calendar struct {
} `json:"_info"` } `json:"_info"`
} }
//ScheduleEntry is a struct to hold extracted JSON data
type ScheduleEntry struct { type ScheduleEntry struct {
ID int `json:"id"` ID int `json:"id"`
ObjectID int `json:"objectId"` ObjectID int `json:"objectId"`

View File

@ -3,6 +3,7 @@ package connectwise
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"strconv"
"time" "time"
) )
@ -486,7 +487,7 @@ func (cw *Site) GetBoardTeamByName(boardID int, teamName string) (*BoardTeam, er
} }
if len(*boardTeam) == 0 { if len(*boardTeam) == 0 {
return nil, fmt.Errorf("connectsise returned no results for %s/%s", boardID, teamName) return nil, fmt.Errorf("connectwise returned no results for %d/%s", boardID, teamName)
} }
return &(*boardTeam)[0], nil return &(*boardTeam)[0], nil
@ -508,3 +509,32 @@ func (cw *Site) GetBoards() (*[]Board, error) {
return board, nil return board, nil
} }
//AssignTicketToTeam will set the team/id of a ticket
func (cw *Site) AssignTicketToTeam(ticketID, teamID int) (*Ticket, error) {
patches := &[]Patch{}
patch := &Patch{
Op: "replace",
Path: "team/id",
Value: strconv.Itoa(teamID)}
*patches = append(*patches, *patch)
patchBody, err := json.Marshal(patches)
if err != nil {
return nil, fmt.Errorf("could not marhsal patch json to byte slice: %s", err)
}
req := cw.NewRequest(fmt.Sprintf("/service/tickets/%d", ticketID), "PATCH", patchBody)
err = req.Do()
if err != nil {
return nil, fmt.Errorf("request failed for %s: %s", req.RestAction, err)
}
ticket := &Ticket{}
err = json.Unmarshal(req.Body, ticket)
if err != nil {
return nil, fmt.Errorf("failed to unmarshal body into struct: %s", err)
}
return ticket, nil
}

View File

@ -21,7 +21,8 @@ type Callback struct {
} `json:"_info"` } `json:"_info"`
} }
//GetMembers returns a slice of Member structs containing all the members (users) of connectwise //GetSystemMembers returns a slice of Member structs containing all the members (users) of connectwise
//TBD finish this, I don't have permissions with my API key to see the JSON data
func (cw *Site) GetSystemMembers() error { func (cw *Site) GetSystemMembers() error {
req := cw.NewRequest("/system/members", "GET", nil) req := cw.NewRequest("/system/members", "GET", nil)
err := req.Do() err := req.Do()
@ -29,8 +30,6 @@ func (cw *Site) GetSystemMembers() error {
return fmt.Errorf("request failed for %s: %s", req.RestAction, err) return fmt.Errorf("request failed for %s: %s", req.RestAction, err)
} }
fmt.Println("test")
fmt.Println(req.Body)
/* /*
callbacks := &[]Callback{} callbacks := &[]Callback{}
err = json.Unmarshal(req.Body, callbacks) err = json.Unmarshal(req.Body, callbacks)