diff --git a/protocols/hypertextTransferProtocolStrategy.go b/protocols/hypertextTransferProtocolStrategy.go index 2faa787..e81d105 100644 --- a/protocols/hypertextTransferProtocolStrategy.go +++ b/protocols/hypertextTransferProtocolStrategy.go @@ -65,14 +65,36 @@ func traceRequest(request *http.Request, tr tracer.Tracer) { Body: body, HostHTTPRequest: request.Host, UserAgent: request.UserAgent(), - Cookies: request.Cookies(), - Headers: request.Header, + Cookies: mapCookiesToString(request.Cookies()), + Headers: mapHeaderToString(request.Header), Status: tracer.Stateless.String(), RemoteAddr: request.RemoteAddr, ID: uuid.New().String(), }) } +func mapHeaderToString(headers http.Header) string { + headersString := "" + + for key := range headers { + for _, values := range headers[key] { + headersString += fmt.Sprintf("[Key: %s, values: %s],", key, values) + } + } + + return headersString +} + +func mapCookiesToString(cookies []*http.Cookie) string { + cookiesString := "" + + for _, cookie := range cookies { + cookiesString += cookie.String() + } + + return cookiesString +} + func setResponseHeaders(responseWriter http.ResponseWriter, headers []string, statusCode int) { // http.StatusText(statusCode): empty string if the code is unknown. if len(http.StatusText(statusCode)) > 0 { diff --git a/tracer/tracer.go b/tracer/tracer.go index 88c5f26..f67935c 100644 --- a/tracer/tracer.go +++ b/tracer/tracer.go @@ -1,7 +1,6 @@ package tracer import ( - "net/http" "time" ) @@ -18,7 +17,7 @@ func Init(strategy Strategy) *Tracer { } func (tracer *Tracer) TraceEvent(event Event) { - event.DateTime = time.Now().UTC().String() + event.DateTime = time.Now().UTC().Format(time.RFC3339) tracer.strategy(event) } @@ -34,8 +33,8 @@ type Event struct { User string Password string Client string - Headers http.Header - Cookies []*http.Cookie + Headers string + Cookies string UserAgent string HostHTTPRequest string Body string