summaryrefslogtreecommitdiff
path: root/pkg/web/transport.go
blob: e3333f5e6c7bcb88c0836440bdbbef0a26f0a5f4 (plain)
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
package web

import (
	"net/http"

	"github.com/rs/zerolog"
	"github.com/xlgmokha/x/pkg/log"
	"github.com/xlgmokha/x/pkg/mapper"
	"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/pls"
)

type Transport struct {
	Logger *zerolog.Logger
}

func (r *Transport) RoundTrip(request *http.Request) (*http.Response, error) {
	ctx := r.Logger.WithContext(request.Context())
	log.WithFields(ctx, mapper.MapFrom[*http.Request, log.Fields](request))

	defer pls.FlushLog(ctx)

	response, err := http.DefaultTransport.RoundTrip(request)
	if err != nil {
		pls.LogError(ctx, err)
		return response, err
	}

	log.WithFields(ctx, log.Fields{"status_code": response.StatusCode})
	return response, nil
}