You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by sv...@apache.org on 2016/10/25 19:11:09 UTC
[15/19] brooklyn-client git commit: Avoid passing through the content
even for 404 URLs
Avoid passing through the content even for 404 URLs
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-client/commit/665f00a0
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-client/tree/665f00a0
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-client/diff/665f00a0
Branch: refs/heads/master
Commit: 665f00a06299c573cd5266db12eec3f4bfaa6702
Parents: e6a5d58
Author: Geoff Macartney <ge...@cloudsoftcorp.com>
Authored: Mon Oct 24 19:55:53 2016 +0100
Committer: Geoff Macartney <ge...@cloudsoftcorp.com>
Committed: Tue Oct 25 11:14:53 2016 +0100
----------------------------------------------------------------------
cli/net/net.go | 49 +++++++++++++++++++++++++++----------------------
1 file changed, 27 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/665f00a0/cli/net/net.go
----------------------------------------------------------------------
diff --git a/cli/net/net.go b/cli/net/net.go
index b47d75a..73cfdea 100644
--- a/cli/net/net.go
+++ b/cli/net/net.go
@@ -28,8 +28,6 @@ import (
"net/url"
"os"
"path/filepath"
- "strconv"
- "strings"
"crypto/tls"
)
@@ -111,19 +109,27 @@ func (net *Network) SendRequest(req *http.Request) ([]byte, error) {
return body, err
}
-func (net *Network) SendRequestGetStatusCode(req *http.Request) ([]byte, int, error) {
+func (net *Network) makeClient() (*http.Client) {
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: net.SkipSslChecks},
}
client := &http.Client{Transport: tr}
+ return client
+}
+
+func (net *Network) SendRequestGetStatusCode(req *http.Request) ([]byte, int, error) {
+ client := net.makeClient()
resp, err := client.Do(req)
if err != nil {
return nil, 0, err
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
- if code, failed := unsuccessful(resp.Status); failed {
- return nil, 0, makeError(resp, code, body)
+ if err != nil {
+ body = nil
+ }
+ if failed := unsuccessful(resp.StatusCode); failed {
+ return nil, 0, makeError(resp, resp.StatusCode, body)
}
return body, resp.StatusCode, err
}
@@ -131,16 +137,8 @@ func (net *Network) SendRequestGetStatusCode(req *http.Request) ([]byte, int, er
const httpSuccessSeriesFrom = 200
const httpSuccessSeriesTo = 300
-func unsuccessful(status string) (int, bool) {
- tokens := strings.Split(status, " ")
- if 0 == len(tokens) {
- return -1, false
- }
- code, err := strconv.Atoi(tokens[0])
- if nil != err {
- return -1, false
- }
- return code, code < httpSuccessSeriesFrom || httpSuccessSeriesTo <= code
+func unsuccessful(code int) (bool) {
+ return code < httpSuccessSeriesFrom || httpSuccessSeriesTo <= code
}
func (net *Network) SendGetRequest(url string) ([]byte, error) {
@@ -176,7 +174,10 @@ func (net *Network) SendPostRequest(urlStr string, data []byte) ([]byte, error)
}
func (net *Network) SendPostResourceRequest(restUrl string, resourceUrl string, contentType string) ([]byte, error) {
- resource, err := openResource(resourceUrl)
+ resource, err := net.openResource(resourceUrl)
+ if err != nil {
+ return nil, err
+ }
defer resource.Close()
req := net.NewPostRequest(restUrl, resource)
req.Header.Set("Content-Type", contentType)
@@ -184,23 +185,23 @@ func (net *Network) SendPostResourceRequest(restUrl string, resourceUrl string,
return body, err
}
-func openResource(resourceUrl string) (io.ReadCloser, error) {
+func (net *Network) openResource(resourceUrl string) (io.ReadCloser, error) {
u, err := url.Parse(resourceUrl)
if err != nil {
return nil, err
}
if "" == u.Scheme || "file" == u.Scheme {
- return openFileResource(u)
+ return net.openFileResource(u)
} else if "http" == u.Scheme || "https" == u.Scheme {
- return openHttpResource(resourceUrl)
+ return net.openHttpResource(resourceUrl)
} else {
return nil, errors.New("Unrecognised protocol scheme: " + u.Scheme)
}
}
-func openFileResource(url *url.URL) (io.ReadCloser, error) {
+func (net *Network) openFileResource(url *url.URL) (io.ReadCloser, error) {
filePath := url.Path;
file, err := os.Open(filepath.Clean(filePath))
if err != nil {
@@ -209,11 +210,15 @@ func openFileResource(url *url.URL) (io.ReadCloser, error) {
return file, nil
}
-func openHttpResource(resourceUrl string) (io.ReadCloser, error) {
- resp, err := http.Get(resourceUrl)
+func (net *Network) openHttpResource(resourceUrl string) (io.ReadCloser, error) {
+ client := net.makeClient()
+ resp, err := client.Get(resourceUrl)
if err != nil {
return nil, err
}
+ if failed := unsuccessful(resp.StatusCode) ; failed {
+ return nil, errors.New("Error retrieving " + resourceUrl + " (" + resp.Status + ")")
+ }
return resp.Body, nil
}