58 lines
1.6 KiB
Go
58 lines
1.6 KiB
Go
package api
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/fatih/color"
|
|
"github.com/go-resty/resty/v2"
|
|
)
|
|
|
|
func logRequest(req *resty.Request) {
|
|
fmt.Println(color.GreenString("Request:"))
|
|
fmt.Printf("%s %s\n", color.CyanString(req.Method), color.YellowString(req.URL))
|
|
fmt.Println(color.GreenString("Headers:"))
|
|
for k, v := range req.Header {
|
|
redacted := false
|
|
for _, rh := range RedactedHeaders {
|
|
if strings.EqualFold(strings.ToLower(k), strings.ToLower(rh)) {
|
|
redacted = true
|
|
break
|
|
}
|
|
}
|
|
if redacted {
|
|
fmt.Printf("%s: %s\n", color.CyanString(k), color.RedString("REDACTED"))
|
|
} else {
|
|
if len(v) == 1 {
|
|
fmt.Printf("%s: %s\n", color.CyanString(k), color.YellowString(v[0]))
|
|
} else {
|
|
fmt.Printf("%s: %s\n", color.CyanString(k), color.YellowString(strings.Join(v, ",")))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func logResponse(resp *resty.Response) {
|
|
fmt.Println(color.GreenString("Response:"))
|
|
if resp.StatusCode() < 200 || resp.StatusCode() >= 300 {
|
|
fmt.Printf("%s %s\n", color.CyanString(resp.Proto()), color.RedString(resp.Status()))
|
|
} else {
|
|
fmt.Printf("%s %s\n", color.CyanString(resp.Proto()), color.YellowString(resp.Status()))
|
|
}
|
|
fmt.Printf("Time Duration: %s\n", resp.Time())
|
|
fmt.Println(color.GreenString("Headers:"))
|
|
for k, v := range resp.Header() {
|
|
redacted := false
|
|
for _, rh := range RedactedHeaders {
|
|
if strings.EqualFold(strings.ToLower(k), strings.ToLower(rh)) {
|
|
redacted = true
|
|
break
|
|
}
|
|
}
|
|
if redacted {
|
|
fmt.Printf("%s: %s\n", color.CyanString(k), color.RedString("REDACTED"))
|
|
} else {
|
|
fmt.Printf("%s: %s\n", color.CyanString(k), color.YellowString(strings.Join(v, ",")))
|
|
}
|
|
}
|
|
}
|