1 /* Helper methods for dealing with responses from API Server. */
7 "git.curoverse.com/arvados.git/sdk/go/arvadosclient"
11 func UserIsAdmin(arv arvadosclient.ArvadosClient) (is_admin bool, err error) {
13 IsAdmin bool `json:"is_admin"`
16 err = arv.Call("GET", "users", "", "current", nil, &u)
20 func SdkListResponseContainsAllAvailableItems(response map[string]interface{}) (containsAll bool, numContained int, numAvailable int) {
21 if value, ok := response["items"]; ok {
22 items := value.([]interface{})
24 var itemsAvailable interface{}
25 if itemsAvailable, ok = response["items_available"]; !ok {
26 // TODO(misha): Consider returning an error here (and above if
27 // we can't find items) so that callers can recover.
28 log.Fatalf("API server did not return the number of items available")
30 numContained = len(items)
31 numAvailable = int(itemsAvailable.(float64))
32 // If we never entered this block, allAvailable would be false by
33 // default, which is what we want
34 containsAll = numContained == numAvailable
40 func IterateSdkListItems(response map[string]interface{}) (c <-chan map[string]interface{}, err error) {
41 if value, ok := response["items"]; ok {
42 ch := make(chan map[string]interface{})
44 items := value.([]interface{})
46 for _, item := range items {
47 ch <- item.(map[string]interface{})
52 err = errors.New("Could not find \"items\" field in response " +
53 "passed to IterateSdkListItems()")