handleUserGroupRoutes 处理 /v1/user-groups/ 下的子路由。
(w http.ResponseWriter, r *http.Request)
| 89 | |
| 90 | // handleUserGroupRoutes 处理 /v1/user-groups/ 下的子路由。 |
| 91 | func (a *userGroupAPI) handleUserGroupRoutes(w http.ResponseWriter, r *http.Request) { |
| 92 | path := strings.TrimPrefix(r.URL.Path, "/v1/user-groups/") |
| 93 | if path == "" { |
| 94 | writeJSON(w, http.StatusNotFound, map[string]any{"error": "group id is required"}) |
| 95 | return |
| 96 | } |
| 97 | |
| 98 | // 解析路径:{id} 或 {id}/members 或 {id}/members/{uid} 或 {id}/sync |
| 99 | parts := strings.SplitN(path, "/", 3) |
| 100 | groupID := parts[0] |
| 101 | |
| 102 | if len(parts) == 1 { |
| 103 | // /v1/user-groups/{id} |
| 104 | a.handleUserGroupByID(w, r, groupID) |
| 105 | return |
| 106 | } |
| 107 | |
| 108 | switch parts[1] { |
| 109 | case "members": |
| 110 | if len(parts) == 2 || parts[2] == "" { |
| 111 | // /v1/user-groups/{id}/members |
| 112 | a.handleGroupMembers(w, r, groupID) |
| 113 | } else { |
| 114 | // /v1/user-groups/{id}/members/{uid} |
| 115 | a.handleGroupMemberByUID(w, r, groupID, parts[2]) |
| 116 | } |
| 117 | case "sync": |
| 118 | // /v1/user-groups/{id}/sync |
| 119 | a.handleGroupSync(w, r, groupID) |
| 120 | default: |
| 121 | writeJSON(w, http.StatusNotFound, map[string]any{"error": "not found"}) |
| 122 | } |
| 123 | } |
| 124 | |
| 125 | // handleUserGroupByID 处理单个用户组的 PUT 和 DELETE 请求。 |
| 126 | func (a *userGroupAPI) handleUserGroupByID(w http.ResponseWriter, r *http.Request, id string) { |
nothing calls this directly
no test coverage detected