You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package task
import ( "encoding/json" "fmt" "net/http"
"git.drinkme.beer/yinghe/log"
"git.drinkme.beer/yinghe/asana/util" )
const ( AddFollowersURI = "/api/1.0/tasks/%s/addFollowers" )
type Follower struct { Followers []string `json:"followers,omitempty"` }
type FollowersRequest struct { Data Follower `json:"data"` }
func (f Follower) Add(token, taskID string) error { var ( req FollowersRequest ) if "" == token || "" == taskID { log.Errorf("illegal request") return fmt.Errorf("illegal request") } if nil == f.Followers { log.Errorf("invalid request, followers") return fmt.Errorf("none followers") }
req.Data = f buf, err := json.Marshal(&req) if nil != err { log.Errorf("invalid arguments: %s", err.Error()) return err } log.Infof("request ==> %s", string(buf))
headers := make(map[string]string) headers["Authorization"] = token headers["Content-Type"] = util.ContentType
client := util.NewHttpClient(util.AsanaHost, fmt.Sprintf(AddFollowersURI, taskID), util.HttpPostMethod, buf) client.Headers = headers
err = client.Request() if nil != err { log.Errorf("failed to create new Asana task: %s", err.Error()) return err } log.Infof("response status: %d", client.HTTPStatus) if http.StatusOK != client.HTTPStatus { log.Errorf("unexpected response") err = fmt.Errorf("unexpected response") return err } else { return nil } }
|