wtlangford / go-desk

Desk.com APIv2 client implementation in Go

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GoDoc Build Status

Desk.com APIv2 client implementation in Go (http://dev.desk.com/API)

Most major endpoints have been implemented, leaving the more isoteric ones still to do. Those likely won't be worked on unless there's a demand for it. See the project issues section for up-to-date information on what's on the roadmap.

Examples

There's two ways to create request bodies.

Using the builder pattern:

message:=resource.MessageBuilder.
	SetString("Direction","in").
	SetString("Status","received").
	SetString("To","someone@desk.com").
	SetString("From","someone-else@desk.com").
	SetString("Subject","Case created by API via desk-go").
	SetString("Body","Please assist me with this case").
	BuildMessage()

Using a constructor:

message:=resource.NewMessage()
message.Direction=types.String("in")
message.Status=types.String("received")
message.To=types.String("someone@desk.com")
message.From=types.String("someone-else@desk.com")
message.Subject=types.String("Case created by API via desk-go")
message.Body=types.String("Please assist me with this case")

Struct literal composition is not supported, as the constructor performs some additional initialization(s).

For additional examples of the desk API usage, look at the tests in the integration directory.

Create a new case

func main() {

  //create http client
	siteUrl := "mysite.desk.com"
	userEmail := "mysite@somewhere.com"
	userPassword := "mysite.desk.com pass"
	client := service.NewClient(nil,siteUrl,userEmail,userPassword)

  //create a new case
	message:=resource.MessageBuilder.
		SetString("Direction","in").
		SetString("Status","received").
		SetString("To","someone@desk.com").
		SetString("From","someone-else@desk.com").
		SetString("Subject","Case created by API via desk-go").
		SetString("Body","Please assist me with this case").
		BuildMessage()
	caze:=resource.CaseBuilder.
		SetString("Type","email").
		SetString("Subject","Case created by API via desk-go").
		SetInt("Priority",4).
		SetString("Status","received").
		SetMessage(message).
		AddHrefLink("customer",fmt.Sprintf("/api/v2/customers/%d",192220782)).
		BuildCase()
	newCase,_,err := client.Case.Create(caze)
	if err != nil {
		fmt.Printf("error: %v\n\n", err)
	} else {
		fmt.Printf("%v\n\n",newCase.String())
	}
}

Other Libraries

Libraries in other languages are also available:

About

Desk.com APIv2 client implementation in Go

License:MIT License


Languages

Language:Go 99.7%Language:Shell 0.3%