8 "git.curoverse.com/arvados.git/sdk/go/arvados"
9 "git.curoverse.com/arvados.git/sdk/go/auth"
10 "git.curoverse.com/arvados.git/sdk/go/httpserver"
13 func (h *Handler) groupsShared(w http.ResponseWriter, req *http.Request, currentUser CurrentUser) error {
20 gl := arvados.GroupList{}
22 err = db.QueryRowContext(req.Context(), `SELECT count(uuid) from groups`).Scan(&gl.ItemsAvailable)
27 rows, err := db.QueryContext(req.Context(), `SELECT uuid, name, owner_uuid, group_class from groups limit 50`)
35 rows.Scan(&g.UUID, &g.Name, &g.OwnerUUID, &g.GroupClass)
36 gl.Items = append(gl.Items, g)
39 enc := json.NewEncoder(w)
48 func (h *Handler) handleGoAPI(w http.ResponseWriter, req *http.Request, next http.Handler) {
49 if req.URL.Path != "/arvados/v1/groups/shared" {
50 next.ServeHTTP(w, req)
54 // Check token and get user UUID
56 creds := auth.NewCredentials()
57 creds.LoadTokensFromHTTPRequest(req)
59 if len(creds.Tokens) == 0 {
60 httpserver.Error(w, "Not logged in", http.StatusForbidden)
64 currentUser := CurrentUser{Authorization: arvados.APIClientAuthorization{APIToken: creds.Tokens[0]}}
65 err := h.validateAPItoken(req, ¤tUser)
67 if err == sql.ErrNoRows {
68 httpserver.Error(w, "Not logged in", http.StatusForbidden)
70 httpserver.Error(w, err.Error(), http.StatusBadRequest)
75 // Handle /arvados/v1/groups/shared
77 err = h.groupsShared(w, req, currentUser)
79 httpserver.Error(w, err.Error(), http.StatusBadRequest)