Darius klein 69785d74a8
Some checks failed
build and deploy kleinTodo / build (push) Failing after 11s
WIP client implementation
2025-08-23 19:14:16 +02:00

39 lines
937 B
Go

package httpClient
import (
"fmt"
"net/http"
)
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("Authorization", fmt.Sprintf("Beare%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}}
}
// 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
}