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 }