当我不是管理员时,如何停止自己在工作区中的时间输入

时间:2019-05-07 17:48:59

标签: clockify

我正在为https://clockify.me api创建一个简单的客户端来启动/停止计时器,并且它非常适合我自己的工作空间,在另一个工作空间中,我可以毫无问题地启动计时器,但是尝试停止会给我一个403状态代码。

如果我将用户权限更改为工作空间上的admin,则它可以正常工作而不会出现错误代码,或者如果我使用具有admin权限的apikey来停止其他人的计时器。

我不确定这是否是api中的错误,或者是否缺少我无需传递userId即可停止“我的计时器”的另一个端点,这是有关停止计时器https://clockify.me/developers-api#operation--v1-workspaces--workspaceId--user--userId--time-entries-patch的唯一文档。 / p>

我正在使用的端点是

https://clockify.me/api/v1/workspaces/{WORKSPACE_ID}/user/{USER_ID}/time-entries

我正在使用的代码:

func (cli Cli) prepareRequest(endpoint string, method string, body io.Reader) *http.Request {
    request, _ := http.NewRequest(method, clockifySettings.Endpoint+endpoint, body)
    request.Header.Add("X-Api-Key", clockifySettings.ApiKey)
    if body != nil {
        request.Header.Set("Content-Type", "application/json")
    }
    return request
}

func (cli Cli) doRequest(endpoint string, method string, body io.Reader, target interface{}) error {
    request := cli.prepareRequest(endpoint, method, body)
    client := http.Client{Timeout: 10 * time.Second}
    response, _  := client.Do(request)
    if response.StatusCode != 200 && response.StatusCode != 201 {
        return errors.New(strconv.Itoa(response.StatusCode))
    }
    if target != nil {
        return json.NewDecoder(response.Body).Decode(target)
    }
    return nil
}

func (cli Cli) StopTimer() error {
    now, _ := goment.New()
    endrequest := struct {
        End string `json:"end"`
    }{
        End: now.UTC().Format("YYYY-MM-DDTHH:mm:ss")+"Z",
    }
    body, _ := json.Marshal(endrequest)
    err := cli.doRequest("workspaces/"+clockifySettings.WorkspaceDefaultId+"/user/"+clockifySettings.UserID+"/time-entries", "PATCH", bytes.NewReader(body), nil)
    return err
}

0 个答案:

没有答案