report/log.go (57 lines of code) (raw):

package report import ( "encoding/json" "fmt" "strings" paltypes "github.com/ms-henglu/pal/types" ) func IsUrlMatchWithId(url string, id string) bool { return strings.HasPrefix(url, id+"?") } func RequestTraceToString(r paltypes.RequestTrace) string { return fmt.Sprintf(`%s %s Status Code: %d ------------ Request ------------ %s ------------ Response ------------ %s `, r.Method, r.Url, r.StatusCode, HttpRequestToString(r.Request), HttpResponseToString(r.Response)) } func HttpRequestToString(r *paltypes.HttpRequest) string { if r == nil { return "" } headers := "" for k, v := range r.Headers { headers += fmt.Sprintf("%s: %s\n", k, v) } bodyContent := r.Body var body interface{} if err := json.Unmarshal([]byte(bodyContent), &body); err == nil { if data, err := json.MarshalIndent(body, "", " "); err == nil { bodyContent = string(data) } } return fmt.Sprintf(`%s --- %s `, headers, bodyContent) } func HttpResponseToString(r *paltypes.HttpResponse) string { if r == nil { return "" } headers := "" for k, v := range r.Headers { headers += fmt.Sprintf("%s: %s\n", k, v) } bodyContent := r.Body var body interface{} if err := json.Unmarshal([]byte(bodyContent), &body); err == nil { if data, err := json.MarshalIndent(body, "", " "); err == nil { bodyContent = string(data) } } return fmt.Sprintf(`%s------ %s`, headers, bodyContent) }