76 lines
1.3 KiB
Go
76 lines
1.3 KiB
Go
package signozio
|
|
|
|
import (
|
|
"encoding/json"
|
|
"io"
|
|
"net/http"
|
|
"time"
|
|
|
|
"go.signoz.io/signoz/pkg/query-service/constants"
|
|
"go.signoz.io/signoz/pkg/query-service/model"
|
|
)
|
|
|
|
var C *Client
|
|
|
|
const (
|
|
POST = "POST"
|
|
APPLICATION_JSON = "application/json"
|
|
)
|
|
|
|
type Client struct {
|
|
Prefix string
|
|
}
|
|
|
|
func New() *Client {
|
|
return &Client{
|
|
Prefix: constants.ConfigSignozIo,
|
|
}
|
|
}
|
|
|
|
func init() {
|
|
C = New()
|
|
}
|
|
|
|
// FetchDynamicConfigs fetches configs from config server
|
|
func FetchDynamicConfigs() (map[string]Config, *model.ApiError) {
|
|
|
|
client := http.Client{Timeout: 5 * time.Second}
|
|
req, err := http.NewRequest(http.MethodGet, C.Prefix+"/configs", http.NoBody)
|
|
if err != nil {
|
|
return DefaultConfig, nil
|
|
}
|
|
req.SetBasicAuth("admin", "SigNoz@adm1n")
|
|
httpResponse, err := client.Do(req)
|
|
if err != nil {
|
|
return DefaultConfig, nil
|
|
}
|
|
|
|
defer httpResponse.Body.Close()
|
|
|
|
if err != nil {
|
|
return DefaultConfig, nil
|
|
}
|
|
|
|
httpBody, err := io.ReadAll(httpResponse.Body)
|
|
if err != nil {
|
|
return DefaultConfig, nil
|
|
}
|
|
|
|
// read api request result
|
|
result := ConfigResult{}
|
|
err = json.Unmarshal(httpBody, &result)
|
|
if err != nil {
|
|
return DefaultConfig, nil
|
|
}
|
|
|
|
switch httpResponse.StatusCode {
|
|
case 200, 201:
|
|
return result.Data, nil
|
|
case 400, 401:
|
|
return DefaultConfig, nil
|
|
default:
|
|
return DefaultConfig, nil
|
|
}
|
|
|
|
}
|