| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- package plane_v2_api
- import (
- "fmt"
- plane "fwh-toolbox-server/repositories/api/plane_v2"
- )
- // ListWorkspaceMembers 列出工作空间成员
- func ListWorkspaceMembers(c *plane.PlaneClient, slug string) ([]byte, error) {
- url := fmt.Sprintf("/api/workspaces/%s/members/", slug)
- resp, err := c.Get(url)
- if err != nil {
- return nil, err
- }
- if !plane.IsSuccess(resp.StatusCode) {
- return nil, fmt.Errorf("ListWorkspaceMembers 失败: %s", resp.Status)
- }
- return resp.Body, nil
- }
- // GetWorkspaceMember 获取工作空间成员详情
- func GetWorkspaceMember(c *plane.PlaneClient, slug, memberID string) ([]byte, error) {
- url := fmt.Sprintf("/api/workspaces/%s/members/%s/", slug, memberID)
- resp, err := c.Get(url)
- if err != nil {
- return nil, err
- }
- if !plane.IsSuccess(resp.StatusCode) {
- return nil, fmt.Errorf("GetWorkspaceMember 失败: %s", resp.Status)
- }
- return resp.Body, nil
- }
- // UpdateWorkspaceMemberRole 更新工作空间成员角色
- func UpdateWorkspaceMemberRole(c *plane.PlaneClient, slug, memberID string, role int) ([]byte, error) {
- url := fmt.Sprintf("/api/workspaces/%s/members/%s/", slug, memberID)
- payload := map[string]interface{}{
- "role": role,
- }
- resp, err := c.Patch(url, payload)
- if err != nil {
- return nil, err
- }
- if !plane.IsSuccess(resp.StatusCode) {
- return nil, fmt.Errorf("UpdateWorkspaceMemberRole 失败: %s, body=%s", resp.Status, string(resp.Body))
- }
- return resp.Body, nil
- }
- // RemoveWorkspaceMember 移除工作空间成员
- func RemoveWorkspaceMember(c *plane.PlaneClient, slug, memberID string) error {
- url := fmt.Sprintf("/api/workspaces/%s/members/%s/", slug, memberID)
- resp, err := c.Delete(url)
- if err != nil {
- return err
- }
- if resp.StatusCode != 204 {
- return fmt.Errorf("RemoveWorkspaceMember 失败: %s", resp.Status)
- }
- return nil
- }
- // ListProjectMembers 列出项目成员
- func ListProjectMembers(c *plane.PlaneClient, slug, projectID string) ([]byte, error) {
- url := fmt.Sprintf("/api/workspaces/%s/projects/%s/members/", slug, projectID)
- resp, err := c.Get(url)
- if err != nil {
- return nil, err
- }
- if !plane.IsSuccess(resp.StatusCode) {
- return nil, fmt.Errorf("ListProjectMembers 失败: %s", resp.Status)
- }
- return resp.Body, nil
- }
- // AddProjectMember 添加项目成员
- func AddProjectMember(c *plane.PlaneClient, slug, projectID, memberID string, role int) ([]byte, error) {
- url := fmt.Sprintf("/api/workspaces/%s/projects/%s/members/", slug, projectID)
- payload := map[string]interface{}{
- "member": memberID,
- "role": role,
- }
- resp, err := c.Post(url, payload)
- if err != nil {
- return nil, err
- }
- if !plane.IsSuccess(resp.StatusCode) {
- return nil, fmt.Errorf("AddProjectMember 失败: %s, body=%s", resp.Status, string(resp.Body))
- }
- return resp.Body, nil
- }
- // GetProjectMember 获取项目成员详情
- func GetProjectMember(c *plane.PlaneClient, slug, projectID, memberID string) ([]byte, error) {
- url := fmt.Sprintf("/api/workspaces/%s/projects/%s/members/%s/", slug, projectID, memberID)
- resp, err := c.Get(url)
- if err != nil {
- return nil, err
- }
- if !plane.IsSuccess(resp.StatusCode) {
- return nil, fmt.Errorf("GetProjectMember 失败: %s", resp.Status)
- }
- return resp.Body, nil
- }
- // UpdateProjectMemberRole 更新项目成员角色
- func UpdateProjectMemberRole(c *plane.PlaneClient, slug, projectID, memberID string, role int) ([]byte, error) {
- url := fmt.Sprintf("/api/workspaces/%s/projects/%s/members/%s/", slug, projectID, memberID)
- payload := map[string]interface{}{
- "role": role,
- }
- resp, err := c.Patch(url, payload)
- if err != nil {
- return nil, err
- }
- if !plane.IsSuccess(resp.StatusCode) {
- return nil, fmt.Errorf("UpdateProjectMemberRole 失败: %s, body=%s", resp.Status, string(resp.Body))
- }
- return resp.Body, nil
- }
- // RemoveProjectMember 移除项目成员
- func RemoveProjectMember(c *plane.PlaneClient, slug, projectID, memberID string) error {
- url := fmt.Sprintf("/api/workspaces/%s/projects/%s/members/%s/", slug, projectID, memberID)
- resp, err := c.Delete(url)
- if err != nil {
- return err
- }
- if resp.StatusCode != 204 {
- return fmt.Errorf("RemoveProjectMember 失败: %s", resp.Status)
- }
- return nil
- }
|