@@ -0,0 +1,56 @@
|
||||
package client
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// CreateTask creates a work item in a garden.
|
||||
func (c *Client) CreateTask(ctx context.Context, gardenID int, input TaskInput) (Task, *Response, error) {
|
||||
return c.writeTask(ctx, http.MethodPost, taskCollectionPath(gardenID), input)
|
||||
}
|
||||
|
||||
// Tasks lists work items in a garden.
|
||||
func (c *Client) Tasks(ctx context.Context, gardenID int) ([]Task, *Response, error) {
|
||||
var envelope struct {
|
||||
Tasks []Task `json:"tasks"`
|
||||
}
|
||||
response, err := c.do(ctx, http.MethodGet, taskCollectionPath(gardenID), nil, &envelope)
|
||||
return envelope.Tasks, response, err
|
||||
}
|
||||
|
||||
// Task returns one work item within its garden.
|
||||
func (c *Client) Task(ctx context.Context, gardenID, taskID int) (Task, *Response, error) {
|
||||
var envelope struct {
|
||||
Task Task `json:"task"`
|
||||
}
|
||||
response, err := c.do(ctx, http.MethodGet, taskPath(gardenID, taskID), nil, &envelope)
|
||||
return envelope.Task, response, err
|
||||
}
|
||||
|
||||
// UpdateTask partially updates a work item within its garden.
|
||||
func (c *Client) UpdateTask(ctx context.Context, gardenID, taskID int, input TaskInput) (Task, *Response, error) {
|
||||
return c.writeTask(ctx, http.MethodPatch, taskPath(gardenID, taskID), input)
|
||||
}
|
||||
|
||||
// DeleteTask removes a work item from its garden.
|
||||
func (c *Client) DeleteTask(ctx context.Context, gardenID, taskID int) (*Response, error) {
|
||||
return c.do(ctx, http.MethodDelete, taskPath(gardenID, taskID), nil, nil)
|
||||
}
|
||||
|
||||
func (c *Client) writeTask(ctx context.Context, method, path string, input TaskInput) (Task, *Response, error) {
|
||||
var envelope struct {
|
||||
Task Task `json:"task"`
|
||||
}
|
||||
response, err := c.do(ctx, method, path, input, &envelope)
|
||||
return envelope.Task, response, err
|
||||
}
|
||||
|
||||
func taskCollectionPath(gardenID int) string {
|
||||
return "v1/gardens/" + strconv.Itoa(gardenID) + "/tasks"
|
||||
}
|
||||
|
||||
func taskPath(gardenID, taskID int) string {
|
||||
return taskCollectionPath(gardenID) + "/" + strconv.Itoa(taskID)
|
||||
}
|
||||
Reference in New Issue
Block a user