github.com/cloudfoundry-attic/ltc@v0.0.0-20151123212628-098adc7919fc/blob_store/dav_blob_store/blob_store_verifier.go (about)

     1  package dav_blob_store
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  	"net/url"
     7  
     8  	config_package "github.com/cloudfoundry-incubator/ltc/config"
     9  )
    10  
    11  type Verifier struct{}
    12  
    13  func (Verifier) Verify(config *config_package.Config) (authorized bool, err error) {
    14  	blobStoreURL := url.URL{
    15  		Scheme: "http",
    16  		Host:   fmt.Sprintf("%s:%s", config.BlobStore().Host, config.BlobStore().Port),
    17  		User:   url.UserPassword(config.BlobStore().Username, config.BlobStore().Password),
    18  	}
    19  
    20  	baseURL := &url.URL{
    21  		Scheme: blobStoreURL.Scheme,
    22  		Host:   blobStoreURL.Host,
    23  		User:   blobStoreURL.User,
    24  		Path:   "/blobs/",
    25  	}
    26  
    27  	req, err := http.NewRequest("PROPFIND", baseURL.String(), nil)
    28  	if err != nil {
    29  		return false, err
    30  	}
    31  
    32  	req.Header.Add("Depth", "1")
    33  	resp, err := http.DefaultClient.Do(req)
    34  	if err != nil {
    35  		return false, err
    36  	}
    37  
    38  	defer resp.Body.Close()
    39  
    40  	return resp.StatusCode == 207, err
    41  }