code: func (t *tags) All(ctx context.Context) ([]string, error) {
  	var tags []string
  
  	listURLStr, err := t.ub.BuildTagsURL(t.name)
  	if err != nil {
  		return tags, err
  	}
  
  	listURL, err := url.Parse(listURLStr)
  	if err != nil {
  		return tags, err
  	}
  
  	for {
  		resp, err := t.client.Get(listURL.String())
  		if err != nil {
  			return tags, err
  		}
  		defer resp.Body.Close()
  
  		if SuccessStatus(resp.StatusCode) {
  			b, err := ioutil.ReadAll(resp.Body)
  			if err != nil {
  				return tags, err
  			}
  
  			tagsResponse := struct {
  				Tags []string `json:"tags"`
  			}{}
  			if err := json.Unmarshal(b, &tagsResponse); err != nil {
  				return tags, err
  			}
  			tags = append(tags, tagsResponse.Tags...)
  			if link := resp.Header.Get("Link"); link != "" {
  				linkURLStr := strings.Trim(strings.Split(link, ";")[0], "<>")
  				linkURL, err := url.Parse(linkURLStr)
  				if err != nil {
  					return tags, err
  				}
  
  				listURL = listURL.ResolveReference(linkURL)
  			} else {
  				return tags, nil
  			}
  		} else {
  			return tags, HandleErrorResponse(resp)
  		}
  	}
  }
docs: // All returns all tags