Skip to content

Commit

Permalink
Separate log lines for multiple HTTP header values
Browse files Browse the repository at this point in the history
  • Loading branch information
isobit committed Jun 18, 2024
1 parent 9bd6f3c commit 8db9afa
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 30 deletions.
11 changes: 3 additions & 8 deletions internal/schemes/http/connect.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (

"github.com/isobit/ndog/internal"
"github.com/isobit/ndog/internal/log"
"github.com/isobit/ndog/internal/util"
)

type connectOptions struct {
Expand Down Expand Up @@ -130,20 +131,14 @@ func Connect(cfg ndog.ConnectConfig) error {

// Do request
log.Logf(0, "request: %s %s", opts.Method, reqUrl.RequestURI())
for _, key := range sortedHeaderKeys(httpReq.Header) {
values := httpReq.Header[key]
log.Logf(1, "request header: %s: %s", key, strings.Join(values, ", "))
}
util.LogHeaders("request header: ", httpReq.Header)
resp, err := client.Do(httpReq)
if err != nil {
return err
}

log.Logf(0, "response: %s", resp.Status)
for _, key := range sortedHeaderKeys(resp.Header) {
values := resp.Header[key]
log.Logf(1, "response header: %s: %s", key, strings.Join(values, ", "))
}
util.LogHeaders("response header: ", resp.Header)

if opts.GraphQL {
var bodyJson GraphQLResponse
Expand Down
6 changes: 2 additions & 4 deletions internal/schemes/http/listen.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (

"github.com/isobit/ndog/internal"
"github.com/isobit/ndog/internal/log"
"github.com/isobit/ndog/internal/util"
)

type listenOptions struct {
Expand Down Expand Up @@ -96,10 +97,7 @@ func Listen(cfg ndog.ListenConfig) error {
if r.Host != cfg.URL.Host {
log.Logf(1, "request header: Host: %s", r.Host)
}
for _, key := range sortedHeaderKeys(r.Header) {
values := r.Header[key]
log.Logf(1, "request header: %s: %s", key, strings.Join(values, ", "))
}
util.LogHeaders("request header: ", r.Header)
if opts.ServeFile != "" {
http.ServeFile(w, r, filepath.Join(opts.ServeFile, r.URL.Path))
return
Expand Down
15 changes: 0 additions & 15 deletions internal/schemes/http/util.go

This file was deleted.

5 changes: 2 additions & 3 deletions internal/schemes/websocket/websocket.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (

"github.com/isobit/ndog/internal"
"github.com/isobit/ndog/internal/log"
"github.com/isobit/ndog/internal/util"
)

var WSScheme = &ndog.Scheme{
Expand Down Expand Up @@ -63,9 +64,7 @@ func Listen(cfg ndog.ListenConfig) error {
if r.Host != cfg.URL.Host {
log.Logf(1, "request header: Host: %s", r.Host)
}
for key, values := range r.Header {
log.Logf(1, "request header: %s: %s", key, strings.Join(values, ", "))
}
util.LogHeaders("request header: ", r.Header)

upgrader := &websocket.Upgrader{}
conn, err := upgrader.Upgrade(w, r, nil)
Expand Down
26 changes: 26 additions & 0 deletions internal/util/util.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package util

import (
"net/http"
"sort"

"github.com/isobit/ndog/internal/log"
)

func sortedHeaderKeys(header http.Header) []string {
keys := make([]string, 0, len(header))
for k := range header {
keys = append(keys, k)
}
sort.Strings(keys)
return keys
}

func LogHeaders(prefix string, header http.Header) {
for _, key := range sortedHeaderKeys(header) {
values := header[key]
for _, value := range values {
log.Logf(1, "%s%s: %s", prefix, key, value)
}
}
}

0 comments on commit 8db9afa

Please sign in to comment.