diff options
Diffstat (limited to 'vendor/github.com/hashicorp/terraform/helper/logging/transport.go')
-rw-r--r-- | vendor/github.com/hashicorp/terraform/helper/logging/transport.go | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/vendor/github.com/hashicorp/terraform/helper/logging/transport.go b/vendor/github.com/hashicorp/terraform/helper/logging/transport.go new file mode 100644 index 0000000..4477924 --- /dev/null +++ b/vendor/github.com/hashicorp/terraform/helper/logging/transport.go | |||
@@ -0,0 +1,53 @@ | |||
1 | package logging | ||
2 | |||
3 | import ( | ||
4 | "log" | ||
5 | "net/http" | ||
6 | "net/http/httputil" | ||
7 | ) | ||
8 | |||
9 | type transport struct { | ||
10 | name string | ||
11 | transport http.RoundTripper | ||
12 | } | ||
13 | |||
14 | func (t *transport) RoundTrip(req *http.Request) (*http.Response, error) { | ||
15 | if IsDebugOrHigher() { | ||
16 | reqData, err := httputil.DumpRequestOut(req, true) | ||
17 | if err == nil { | ||
18 | log.Printf("[DEBUG] "+logReqMsg, t.name, string(reqData)) | ||
19 | } else { | ||
20 | log.Printf("[ERROR] %s API Request error: %#v", t.name, err) | ||
21 | } | ||
22 | } | ||
23 | |||
24 | resp, err := t.transport.RoundTrip(req) | ||
25 | if err != nil { | ||
26 | return resp, err | ||
27 | } | ||
28 | |||
29 | if IsDebugOrHigher() { | ||
30 | respData, err := httputil.DumpResponse(resp, true) | ||
31 | if err == nil { | ||
32 | log.Printf("[DEBUG] "+logRespMsg, t.name, string(respData)) | ||
33 | } else { | ||
34 | log.Printf("[ERROR] %s API Response error: %#v", t.name, err) | ||
35 | } | ||
36 | } | ||
37 | |||
38 | return resp, nil | ||
39 | } | ||
40 | |||
41 | func NewTransport(name string, t http.RoundTripper) *transport { | ||
42 | return &transport{name, t} | ||
43 | } | ||
44 | |||
45 | const logReqMsg = `%s API Request Details: | ||
46 | ---[ REQUEST ]--------------------------------------- | ||
47 | %s | ||
48 | -----------------------------------------------------` | ||
49 | |||
50 | const logRespMsg = `%s API Response Details: | ||
51 | ---[ RESPONSE ]-------------------------------------- | ||
52 | %s | ||
53 | -----------------------------------------------------` | ||