X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/f675fb2c202516021b961b5aa2de4528ba9f0d1f..ba1ec0f0b59ab871b6e4faf5e8ae87809fdb85b6:/sdk/go/arvados/client.go diff --git a/sdk/go/arvados/client.go b/sdk/go/arvados/client.go index 0c18d38974..a7d8c4acea 100644 --- a/sdk/go/arvados/client.go +++ b/sdk/go/arvados/client.go @@ -241,14 +241,10 @@ func (c *Client) DiscoveryDocument() (*DiscoveryDocument, error) { return c.dd, nil } -func (c *Client) PathForUUID(method, uuid string) (string, error) { +func (c *Client) modelForUUID(dd *DiscoveryDocument, uuid string) (string, error) { if len(uuid) != 27 { return "", fmt.Errorf("invalid UUID: %q", uuid) } - dd, err := c.DiscoveryDocument() - if err != nil { - return "", err - } infix := uuid[6:11] var model string for m, s := range dd.Schemas { @@ -260,6 +256,30 @@ func (c *Client) PathForUUID(method, uuid string) (string, error) { if model == "" { return "", fmt.Errorf("unrecognized UUID infix: %q", infix) } + return model, nil +} + +func (c *Client) KindForUUID(uuid string) (string, error) { + dd, err := c.DiscoveryDocument() + if err != nil { + return "", err + } + model, err := c.modelForUUID(dd, uuid) + if err != nil { + return "", err + } + return "arvados#" + strings.ToLower(model[:1]) + model[1:], nil +} + +func (c *Client) PathForUUID(method, uuid string) (string, error) { + dd, err := c.DiscoveryDocument() + if err != nil { + return "", err + } + model, err := c.modelForUUID(dd, uuid) + if err != nil { + return "", err + } var resource string for r, rsc := range dd.Resources { if rsc.Methods["get"].Response.Ref == model {