github.com/cvmfs/docker-graphdriver@v0.0.0-20181206110523-155ec6df0521/docker2cvmfs/lib/config.go (about)

     1  package lib
     2  
     3  import (
     4  	"io/ioutil"
     5  	"log"
     6  	"net/http"
     7  	"strings"
     8  )
     9  
    10  func getBlob(url string) ([]byte, error) {
    11  	req, _ := http.NewRequest("GET", url, nil)
    12  	req.Header.Add("Authorization", "Bearer "+token)
    13  
    14  	var client http.Client
    15  	resp, err := client.Do(req)
    16  	if err != nil {
    17  		log.Println("Error in making the request to the registry.")
    18  		return nil, err
    19  	}
    20  
    21  	body, err := ioutil.ReadAll(resp.Body)
    22  	if err != nil {
    23  		log.Println("Error in reading the request.")
    24  		return nil, err
    25  	}
    26  	resp.Body.Close()
    27  
    28  	return body, nil
    29  }
    30  
    31  func getConfig(url string) ([]byte, error) {
    32  	return getBlob(url)
    33  }
    34  
    35  func GetConfig(dockerRegistryUrl string, imageReference string) (string, error) {
    36  	manifest, _ := GetManifest(dockerRegistryUrl, imageReference)
    37  	repo := strings.Split(imageReference, ":")[0]
    38  
    39  	config_digest := manifest.Config.Digest
    40  	url := dockerRegistryUrl + "/" + repo + "/blobs/" + config_digest
    41  
    42  	resp, err := getConfig(url)
    43  
    44  	return string(resp), err
    45  }