func (*b2dReleaseGetter) getReleaseTag(apiURL string) (string, error) {
	if apiURL == "" {
		apiURL = defaultURL
	}

	if !version.RC() {
		// Just go straight to the convenience URL for "/latest" if we
		// are a non-release candidate version.  "/latest" won't return
		// non-RCs, so that's what we use for stable releases of
		// Machine.
		apiURL = apiURL + "/latest"
	}

	client := getClient()
	req, err := getRequest(apiURL)
	if err != nil {
		return "", err
	}
	rsp, err := client.Do(req)
	if err != nil {
		return "", err
	}
	defer rsp.Body.Close()

	// If we call the API endpoint
	// "/repos/boot2docker/boot2docker/releases" without specifying
	// "/latest", we will receive a list of releases instead of a single
	// one, and we should decode accordingly.
	if version.RC() {
		var tags []struct {
			TagName string `json:"tag_name"`
		}
		if err := json.NewDecoder(rsp.Body).Decode(&tags); err != nil {
			return "", err
		}
		t := tags[0]
		if t.TagName == "" {
			return "", errGitHubAPIResponse
		}
		return t.TagName, nil
	}

	// Otherwise, we get back just one release, which we can decode to get
	// the tag.
	var t struct {
		TagName string `json:"tag_name"`
	}
	if err := json.NewDecoder(rsp.Body).Decode(&t); err != nil {
		return "", err
	}
	if t.TagName == "" {
		return "", errGitHubAPIResponse
	}
	return t.TagName, nil
}
func (*b2dReleaseGetter) getReleaseTag(apiURL string) (string, error) {
	if apiURL == "" {
		apiURL = defaultURL
	}

	if !version.RC() {
		
		
		
		
		apiURL = apiURL + "/latest"
	}

	client := getClient()
	req, err := getRequest(apiURL)
	if err != nil {
		return "", err
	}
	rsp, err := client.Do(req)
	if err != nil {
		return "", err
	}
	defer rsp.Body.Close()

	
	
	
	
	if version.RC() {
		var tags []struct {
			TagName string `json:"tag_name"`
		}
		if err := json.NewDecoder(rsp.Body).Decode(&tags); err != nil {
			return "", err
		}
		t := tags[0]
		if t.TagName == "" {
			return "", errGitHubAPIResponse
		}
		return t.TagName, nil
	}

	
	
	var t struct {
		TagName string `json:"tag_name"`
	}
	if err := json.NewDecoder(rsp.Body).Decode(&t); err != nil {
		return "", err
	}
	if t.TagName == "" {
		return "", errGitHubAPIResponse
	}
	return t.TagName, nil
}
func ( * b2dReleaseGetter ) getReleaseTag ( apiURL string ) ( string , error ) { if apiURL == " " { apiURL = defaultURL } if ! version . RC ( ) { // Just go straight to the convenience URL for "/latest" if we // are a non-release candidate version.  "/latest" won't return // non-RCs, so that's what we use for stable releases of // Machine. apiURL = apiURL + " " } client := getClient ( ) req , err := getRequest ( apiURL ) if err != nil { return " " , err } rsp , err := client . Do ( req ) if err != nil { return " " , err } defer rsp . Body . Close ( ) // If we call the API endpoint // "/repos/boot2docker/boot2docker/releases" without specifying // "/latest", we will receive a list of releases instead of a single // one, and we should decode accordingly. if version . RC ( ) { var tags [ ] struct { TagName string `json:"tag_name"` } if err := json . NewDecoder ( rsp . Body ) . Decode ( & tags ) ; err != nil { return " " , err } t := tags [ 0 ] if t . TagName == " " { return " " , errGitHubAPIResponse } return t . TagName , nil } // Otherwise, we get back just one release, which we can decode to get // the tag. var t struct { TagName string `json:"tag_name"` } if err := json . NewDecoder ( rsp . Body ) . Decode ( & t ) ; err != nil { return " " , err } if t . TagName == " " { return " " , errGitHubAPIResponse } return t . TagName , nil }
// getReleaseTag gets the release tag of Boot2Docker from apiURL.
getReleaseTag gets the release tag of Boot2Docker from apiURL .