Darius klein 7cf6eabbdd
All checks were successful
build and deploy kleinTodo / build (push) Successful in 51s
build and deploy kleinTodo / build (release) Successful in 1m24s
ci: add integration tests and pipeline step
Co-authored-by: Junie <junie@jetbrains.com>
2026-04-04 13:55:37 +02:00

45 lines
1.0 KiB
Go

package httpClient
import (
"fmt"
"net/http"
"time"
"gitea.kleinsense.nl/DariusKlein/kleinTodo/common"
)
type AuthTransport struct {
Token string
}
type CustomClient struct {
client *http.Client
}
// RoundTrip transport method implementation with jwt in header
func (t *AuthTransport) RoundTrip(req *http.Request) (*http.Response, error) {
req.Header.Add(common.AuthHeader, fmt.Sprintf("Bearer %s", t.Token))
return http.DefaultTransport.RoundTrip(req)
}
// GetHttpClient Returns httpClient with jwt in headers
func getHttpClient(token string) *http.Client {
return &http.Client{
Transport: &AuthTransport{Token: token},
Timeout: 30 * time.Second,
}
}
// GetHttpClient Returns CustomClient with jwt in headers
func GetHttpClient(token string) *CustomClient {
return &CustomClient{getHttpClient(token)}
}
func (client CustomClient) Do(req *http.Request) (*http.Response, error) {
resp, err := client.client.Do(req)
if err != nil {
return nil, fmt.Errorf("error sending request: %w", err)
}
return resp, nil
}