github.com/esnet/gdg@v0.6.1-0.20240412190737-6b6eba9c14d8/internal/api/extended.go (about)

     1  package api
     2  
     3  import (
     4  	"crypto/tls"
     5  	"github.com/carlmjohnson/requests"
     6  	"github.com/esnet/gdg/internal/config"
     7  	"net/http"
     8  )
     9  
    10  //Most of these methods are here due to limitations in existing libraries being used.
    11  
    12  type ExtendedApi struct {
    13  	grafanaCfg *config.GrafanaConfig
    14  }
    15  
    16  func NewExtendedApi() *ExtendedApi {
    17  	cfg := config.Config().GetDefaultGrafanaConfig()
    18  	o := ExtendedApi{
    19  		grafanaCfg: cfg,
    20  	}
    21  	return &o
    22  }
    23  
    24  func (extended *ExtendedApi) getRequestBuilder() *requests.Builder {
    25  
    26  	req := requests.URL(extended.grafanaCfg.URL)
    27  	if config.Config().IgnoreSSL() {
    28  		customTransport := http.DefaultTransport.(*http.Transport).Clone()
    29  		customTransport.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
    30  		req = req.Transport(customTransport)
    31  	}
    32  
    33  	if extended.grafanaCfg.APIToken != "" {
    34  		req.Header("Authorization", "Bearer "+extended.grafanaCfg.APIToken)
    35  	} else {
    36  		req.BasicAuth(extended.grafanaCfg.UserName, extended.grafanaCfg.Password)
    37  	}
    38  
    39  	return req
    40  }