Files
mstore/pkg/gcrcli/imageaux.go
T
2026-03-11 09:54:17 +02:00

80 lines
1.7 KiB
Go

/*
* Copyright 2026 Oleg Borodin <onborodin@gmail.com>
*
* This work is published and licensed under a Creative Commons
* Attribution-NonCommercial-NoDerivatives 4.0 International License.
*
* Distribution of this work is permitted, but commercial use and
* modifications are strictly prohibited.
*/
package gcrcli
import (
"crypto/tls"
"net/http"
"net/url"
"strings"
)
type RoundTripper struct {
skipTLSVerify bool
}
func NewRoundTripper(skipTLSVerify bool) *RoundTripper {
return &RoundTripper{
skipTLSVerify: skipTLSVerify,
}
}
func (t *RoundTripper) RoundTrip(r *http.Request) (*http.Response, error) {
tlsConfig := &tls.Config{
InsecureSkipVerify: t.skipTLSVerify,
}
httpTransport := &http.Transport{
TLSClientConfig: tlsConfig,
}
return httpTransport.RoundTrip(r)
}
func repackReference(ref string) (string, string, string, error) {
var err error
var username string
var password string
if !strings.Contains(ref, `://`) {
ref = "https://" + ref
}
uri, err := url.Parse(ref)
if err != nil {
return ref, username, password, err
}
username = uri.User.Username()
password, _ = uri.User.Password()
uri.User = nil
uri.Path, _ = url.JoinPath("/", uri.Path)
if err != nil {
return ref, username, password, err
}
ref = uri.Host + uri.Path
return ref, username, password, err
}
func repackSource(ref string) (string, string, string, error) {
var err error
var username string
var password string
if !strings.Contains(ref, `://`) {
ref = "https://" + ref
}
uri, err := url.Parse(ref)
if err != nil {
return ref, username, password, err
}
username = uri.User.Username()
password, _ = uri.User.Password()
uri.User = nil
ref = uri.Host
return ref, username, password, err
}