1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
11 "git.curoverse.com/arvados.git/sdk/go/arvados"
12 "git.curoverse.com/arvados.git/sdk/go/httpserver"
15 type responseOptions struct {
19 func (rtr *router) responseOptions(opts interface{}) (responseOptions, error) {
20 var rOpts responseOptions
21 switch opts := opts.(type) {
22 case *arvados.GetOptions:
23 rOpts.Select = opts.Select
28 func (rtr *router) sendResponse(w http.ResponseWriter, resp interface{}, opts responseOptions) {
29 var tmp map[string]interface{}
30 err := rtr.transcode(resp, &tmp)
35 if len(opts.Select) > 0 {
36 selected := map[string]interface{}{}
37 for _, attr := range opts.Select {
38 if v, ok := tmp[attr]; ok {
44 json.NewEncoder(w).Encode(tmp)
47 func (rtr *router) sendError(w http.ResponseWriter, err error) {
48 code := http.StatusInternalServerError
49 if err, ok := err.(interface{ HTTPStatus() int }); ok {
50 code = err.HTTPStatus()
52 httpserver.Error(w, err.Error(), code)