github.com/cloudfoundry-attic/ltc@v0.0.0-20151123212628-098adc7919fc/droplet_runner/proxyconf_reader.go (about)

     1  package droplet_runner
     2  
     3  import (
     4  	"encoding/json"
     5  	"errors"
     6  	"io/ioutil"
     7  	"net/http"
     8  )
     9  
    10  type HTTPProxyConfReader struct {
    11  	URL string
    12  }
    13  
    14  func (p *HTTPProxyConfReader) ProxyConf() (ProxyConf, error) {
    15  	resp, err := http.Get(p.URL)
    16  	if err != nil {
    17  		return ProxyConf{}, err
    18  	}
    19  	defer resp.Body.Close()
    20  
    21  	if resp.StatusCode == 404 {
    22  		return ProxyConf{}, nil
    23  	}
    24  
    25  	if resp.StatusCode != 200 {
    26  		return ProxyConf{}, errors.New(resp.Status)
    27  	}
    28  
    29  	body, err := ioutil.ReadAll(resp.Body)
    30  	if err != nil {
    31  		return ProxyConf{}, err
    32  	}
    33  
    34  	proxyConf := ProxyConf{}
    35  	if err := json.Unmarshal(body, &proxyConf); err != nil {
    36  		return ProxyConf{}, err
    37  	}
    38  
    39  	return proxyConf, nil
    40  }