github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/internal/osnadmin/httpclient.go (about)

     1  /*
     2  Copyright hechain. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package osnadmin
     8  
     9  import (
    10  	"crypto/tls"
    11  	"crypto/x509"
    12  	"net/http"
    13  )
    14  
    15  func httpClient(caCertPool *x509.CertPool, tlsClientCert tls.Certificate) *http.Client {
    16  	return &http.Client{
    17  		Transport: &http.Transport{
    18  			TLSClientConfig: &tls.Config{
    19  				RootCAs:      caCertPool,
    20  				Certificates: []tls.Certificate{tlsClientCert},
    21  			},
    22  		},
    23  	}
    24  }
    25  
    26  func httpDo(req *http.Request, caCertPool *x509.CertPool, tlsClientCert tls.Certificate) (*http.Response, error) {
    27  	client := httpClient(caCertPool, tlsClientCert)
    28  	return client.Do(req)
    29  }
    30  
    31  func httpGet(url string, caCertPool *x509.CertPool, tlsClientCert tls.Certificate) (*http.Response, error) {
    32  	client := httpClient(caCertPool, tlsClientCert)
    33  	return client.Get(url)
    34  }