/
formatter.go
58 lines (50 loc) · 1.63 KB
/
formatter.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"strings"
"time"
)
func prettyJSON(buffer []byte) string {
var prettyJSON string
if len(buffer) > 0 {
var jsonBuffer bytes.Buffer
error := json.Indent(&jsonBuffer, buffer, "", " ")
if error != nil {
return string(buffer)
}
prettyJSON = jsonBuffer.String()
} else {
prettyJSON = ""
}
return prettyJSON
}
func responseDetail(response *http.Response, duration time.Duration, reqheaders []string) string {
var buffer bytes.Buffer
fmt.Fprint(&buffer, "---------- Request -----------------------\n")
fmt.Fprintln(&buffer)
fmt.Fprintf(&buffer, "%s %s\n", response.Request.Method, response.Request.URL.String())
fmt.Fprintf(&buffer, "Host: %s\n", response.Request.URL.Host)
fmt.Fprintf(&buffer, "Authorization: %s...\n", response.Request.Header.Get("Authorization")[0:15])
fmt.Fprintf(&buffer, "User-Agent: %s\n", response.Request.UserAgent())
fmt.Fprintf(&buffer, "Accept: %s\n", response.Request.Header.Get("Accept"))
fmt.Fprintf(&buffer, "x-ms-client-request-id: %s\n", response.Request.Header.Get("x-ms-client-request-id"))
if reqheaders != nil {
for _, h := range reqheaders {
fmt.Fprintf(&buffer, "%s: %s\n", h, response.Request.Header.Get(h))
}
}
fmt.Fprintln(&buffer)
fmt.Fprintf(&buffer, "---------- Response (%s) ------------\n", duration.Truncate(time.Millisecond).String())
fmt.Fprintln(&buffer)
fmt.Fprintf(&buffer, "%s: %s\n", response.Proto, response.Status)
for name, headers := range response.Header {
for _, h := range headers {
name = strings.ToLower(name)
fmt.Fprintf(&buffer, "%v: %v\n", name, h)
}
}
return buffer.String()
}