X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=auth-token-fetch%2FHTTPClient.go;h=5b0d1678da1a4a4a6b847310b809d1da2fca68d9;hb=HEAD;hp=ab76b1369fb1cea38049a280ebeb689812738098;hpb=07b21181487addeb0d89ddc063a89dbc0981d1b5;p=nonrtric.git diff --git a/auth-token-fetch/HTTPClient.go b/auth-token-fetch/HTTPClient.go index ab76b136..5b0d1678 100644 --- a/auth-token-fetch/HTTPClient.go +++ b/auth-token-fetch/HTTPClient.go @@ -21,77 +21,25 @@ package main import ( - "bytes" "crypto/tls" - "fmt" - "io" + "crypto/x509" "net/http" - "net/url" "time" ) -// HTTPClient interface -type HTTPClient interface { - Get(url string) (*http.Response, error) - - Do(*http.Request) (*http.Response, error) -} - -func CreateHttpClient(cert tls.Certificate, timeout time.Duration) *http.Client { +func CreateHttpClient(cert tls.Certificate, caCerts *x509.CertPool, timeout time.Duration) *http.Client { return &http.Client{ Timeout: timeout, - Transport: createTransport(cert), + Transport: createTransport(cert, caCerts), } } -type RequestError struct { - StatusCode int - Body []byte -} - -func (pe RequestError) Error() string { - return fmt.Sprintf("Request failed due to error response with status: %v and body: %v", pe.StatusCode, string(pe.Body)) -} - -func Post(url string, body []byte, contentType string, client HTTPClient) error { - return do(http.MethodPost, url, body, contentType, client) -} - -func do(method string, url string, body []byte, contentType string, client HTTPClient) error { - if req, reqErr := http.NewRequest(method, url, bytes.NewBuffer(body)); reqErr == nil { - req.Header.Set("Content-Type", contentType) - if response, respErr := client.Do(req); respErr == nil { - if isResponseSuccess(response.StatusCode) { - return nil - } else { - return getRequestError(response) - } - } else { - return respErr - } - } else { - return reqErr - } -} - -func isResponseSuccess(statusCode int) bool { - return statusCode >= http.StatusOK && statusCode <= 299 -} - -func getRequestError(response *http.Response) RequestError { - defer response.Body.Close() - responseData, _ := io.ReadAll(response.Body) - putError := RequestError{ - StatusCode: response.StatusCode, - Body: responseData, - } - return putError -} - -func createTransport(cert tls.Certificate) *http.Transport { +func createTransport(cert tls.Certificate, caCerts *x509.CertPool) *http.Transport { return &http.Transport{ TLSClientConfig: &tls.Config{ + ClientCAs: caCerts, + RootCAs: caCerts, Certificates: []tls.Certificate{ cert, }, @@ -99,8 +47,3 @@ func createTransport(cert tls.Certificate) *http.Transport { }, } } - -func IsUrlSecure(configUrl string) bool { - u, _ := url.Parse(configUrl) - return u.Scheme == "https" -}