From bca36171164d8540706e2cf8b7e4e757539ec714 Mon Sep 17 00:00:00 2001 From: Svilen Markov <7613769+svilenmarkov@users.noreply.github.com> Date: Thu, 20 Mar 2025 23:02:17 +0000 Subject: [PATCH] Add allow-insecure to custom-api widget --- docs/configuration.md | 4 ++++ internal/glance/widget-custom-api.go | 12 +++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 610fde3..518252c 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -1336,6 +1336,7 @@ Examples: | url | string | yes | | | headers | key (string) & value (string) | no | | | frameless | boolean | no | false | +| allow-insecure | boolean | no | false | | template | string | yes | | | parameters | key (string) & value (string|array) | no | | | subrequests | map of requests | no | | @@ -1355,6 +1356,9 @@ headers: ##### `frameless` When set to `true`, removes the border and padding around the widget. +##### `allow-insecure` +Whether to ignore invalid/self-signed certificates. + ##### `template` The template that will be used to display the data. It relies on Go's `html/template` package so it's recommended to go through [its documentation](https://pkg.go.dev/text/template) to understand how to do basic things such as conditionals, loops, etc. In addition, it also uses [tidwall's gjson](https://github.com/tidwall/gjson) package to parse the JSON data so it's worth going through its documentation if you want to use more advanced JSON selectors. You can view additional examples with explanations and function definitions [here](custom-api.md). diff --git a/internal/glance/widget-custom-api.go b/internal/glance/widget-custom-api.go index a73dfc4..563d588 100644 --- a/internal/glance/widget-custom-api.go +++ b/internal/glance/widget-custom-api.go @@ -21,10 +21,11 @@ var customAPIWidgetTemplate = mustParseTemplate("custom-api.html", "widget-base. // Needs to be exported for the YAML unmarshaler to work type CustomAPIRequest struct { - URL string `json:"url"` - Headers map[string]string `json:"headers"` - Parameters queryParametersField `json:"parameters"` - httpRequest *http.Request `yaml:"-"` + URL string `json:"url"` + AllowInsecure bool `json:"allow-insecure"` + Headers map[string]string `json:"headers"` + Parameters queryParametersField `json:"parameters"` + httpRequest *http.Request `yaml:"-"` } type customAPIWidget struct { @@ -125,7 +126,8 @@ func (data *customAPITemplateData) Subrequest(key string) *customAPIResponseData } func fetchCustomAPIRequest(ctx context.Context, req *CustomAPIRequest) (*customAPIResponseData, error) { - resp, err := defaultHTTPClient.Do(req.httpRequest.WithContext(ctx)) + client := ternary(req.AllowInsecure, defaultInsecureHTTPClient, defaultHTTPClient) + resp, err := client.Do(req.httpRequest.WithContext(ctx)) if err != nil { return nil, err }