| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- package plane_v2
- import (
- "fmt"
- "go.uber.org/zap"
- )
- // ==================== Issue Link API ====================
- // ListIssueLinks 列出工作项链接
- func ListIssueLinks(slug, projectID, issueID string) ([]byte, error) {
- url := fmt.Sprintf("/api/workspaces/%s/projects/%s/issues/%s/issue-links/", slug, projectID, issueID)
- resp, err := planeWebGet(url)
- if err != nil {
- zap.L().Error("[PlaneWeb] ListIssueLinks 请求失败", zap.Error(err))
- return nil, err
- }
- if !isWebSuccess(resp.StatusCode) {
- zap.L().Error("[PlaneWeb] ListIssueLinks 返回错误", zap.String("status", resp.Status))
- return nil, fmt.Errorf("ListIssueLinks 失败: %s", resp.Status)
- }
- return resp.Body, nil
- }
- // CreateIssueLink 创建工作项链接
- func CreateIssueLink(slug, projectID, issueID, linkURL, title string) ([]byte, error) {
- url := fmt.Sprintf("/api/workspaces/%s/projects/%s/issues/%s/issue-links/", slug, projectID, issueID)
- payload := map[string]interface{}{
- "url": linkURL,
- "title": title,
- }
- resp, err := planeWebPost(url, payload)
- if err != nil {
- zap.L().Error("[PlaneWeb] CreateIssueLink 请求失败", zap.Error(err))
- return nil, err
- }
- if resp.StatusCode != 201 {
- zap.L().Error("[PlaneWeb] CreateIssueLink 返回错误",
- zap.String("status", resp.Status),
- zap.String("body", string(resp.Body)),
- )
- return nil, fmt.Errorf("CreateIssueLink 失败: %s", resp.Status)
- }
- return resp.Body, nil
- }
- // UpdateIssueLink 更新工作项链接
- func UpdateIssueLink(slug, projectID, issueID, linkID string, data map[string]interface{}) ([]byte, error) {
- url := fmt.Sprintf("/api/workspaces/%s/projects/%s/issues/%s/issue-links/%s/", slug, projectID, issueID, linkID)
- resp, err := planeWebPatch(url, data)
- if err != nil {
- zap.L().Error("[PlaneWeb] UpdateIssueLink 请求失败", zap.Error(err))
- return nil, err
- }
- if !isWebSuccess(resp.StatusCode) {
- zap.L().Error("[PlaneWeb] UpdateIssueLink 返回错误",
- zap.String("status", resp.Status),
- zap.String("body", string(resp.Body)),
- )
- return nil, fmt.Errorf("UpdateIssueLink 失败: %s", resp.Status)
- }
- return resp.Body, nil
- }
- // DeleteIssueLink 删除工作项链接
- func DeleteIssueLink(slug, projectID, issueID, linkID string) error {
- url := fmt.Sprintf("/api/workspaces/%s/projects/%s/issues/%s/issue-links/%s/", slug, projectID, issueID, linkID)
- resp, err := planeWebDelete(url)
- if err != nil {
- zap.L().Error("[PlaneWeb] DeleteIssueLink 请求失败", zap.Error(err))
- return err
- }
- if resp.StatusCode != 204 {
- zap.L().Error("[PlaneWeb] DeleteIssueLink 返回错误", zap.String("status", resp.Status))
- return fmt.Errorf("DeleteIssueLink 失败: %s", resp.Status)
- }
- return nil
- }
|