X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/045e3127cb48845c7d988d01488c055f02ae2ec3..431b8df752ca99dd8aa777864f7c5ada650d0ac9:/sdk/go/arvados/client.go?ds=sidebyside diff --git a/sdk/go/arvados/client.go b/sdk/go/arvados/client.go index 52c75d5113..13bb3bf80d 100644 --- a/sdk/go/arvados/client.go +++ b/sdk/go/arvados/client.go @@ -9,6 +9,7 @@ import ( "context" "crypto/tls" "encoding/json" + "errors" "fmt" "io" "io/ioutil" @@ -67,6 +68,10 @@ type Client struct { dd *DiscoveryDocument defaultRequestID string + + // APIHost and AuthToken were loaded from ARVADOS_* env vars + // (used to customize "no host/token" error messages) + loadedFromEnv bool } // InsecureHTTPClient is the default http.Client used by a Client with @@ -123,6 +128,7 @@ func NewClientFromEnv() *Client { Insecure: insecure, KeepServiceURIs: svcs, Timeout: 5 * time.Minute, + loadedFromEnv: true, } } @@ -312,6 +318,12 @@ func (c *Client) RequestAndDecodeContext(ctx context.Context, dst interface{}, m // Ensure body is closed even if we error out early defer body.Close() } + if c.APIHost == "" { + if c.loadedFromEnv { + return errors.New("ARVADOS_API_HOST and/or ARVADOS_API_TOKEN environment variables are not set") + } + return errors.New("arvados.Client cannot perform request: APIHost is not set") + } urlString := c.apiURL(path) urlValues, err := anythingToValues(params) if err != nil {