This commit is contained in:
Svilen Markov 2024-11-30 10:48:33 +00:00
parent 1d9ae72c81
commit 02cbb5f812
23 changed files with 11 additions and 75 deletions

View file

@ -99,7 +99,6 @@ func (d *durationField) UnmarshalYAML(node *yaml.Node) error {
}
duration, err := strconv.Atoi(matches[1])
if err != nil {
return err
}

View file

@ -147,7 +147,6 @@ func (a *application) handlePageRequest(w http.ResponseWriter, r *http.Request)
var responseBytes bytes.Buffer
err := pageTemplate.Execute(&responseBytes, pageData)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(err.Error()))
@ -173,7 +172,6 @@ func (a *application) handlePageContentRequest(w http.ResponseWriter, r *http.Re
var responseBytes bytes.Buffer
err := pageContentTemplate.Execute(&responseBytes, pageData)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(err.Error()))
@ -193,7 +191,6 @@ func (a *application) handleWidgetRequest(w http.ResponseWriter, r *http.Request
widgetValue := r.PathValue("widget")
widgetID, err := strconv.ParseUint(widgetValue, 10, 64)
if err != nil {
a.handleNotFound(w, r)
return

View file

@ -12,7 +12,6 @@ var buildVersion = "dev"
func Main() int {
options, err := parseCliOptions()
if err != nil {
fmt.Println(err)
return 1

View file

@ -25,7 +25,6 @@ func extractDomainFromUrl(u string) string {
}
parsed, err := url.Parse(u)
if err != nil {
return ""
}

View file

@ -103,7 +103,6 @@ func fetchWatchUUIDsFromChangeDetection(instanceURL string, token string) ([]str
}
uuidsMap, err := decodeJsonFromRequest[map[string]struct{}](defaultClient, request)
if err != nil {
return nil, fmt.Errorf("could not fetch list of watch UUIDs: %v", err)
}
@ -139,7 +138,6 @@ func fetchWatchesFromChangeDetection(instanceURL string, requestedWatchIDs []str
task := decodeJsonFromRequestTask[changeDetectionResponseJson](defaultClient)
job := newJob(task, requests).withWorkers(15)
responses, errs, err := workerPoolDo(job)
if err != nil {
return nil, err
}

View file

@ -33,9 +33,7 @@ func (widget *clockWidget) initialize() error {
return errors.New("missing timezone value")
}
_, err := time.LoadLocation(widget.Timezones[t].Timezone)
if err != nil {
if _, err := time.LoadLocation(widget.Timezones[t].Timezone); err != nil {
return fmt.Errorf("invalid timezone '%s': %v", widget.Timezones[t].Timezone, err)
}
}

View file

@ -39,7 +39,6 @@ func (widget *customAPIWidget) initialize() error {
}
compiledTemplate, err := template.New("").Funcs(customAPITemplateFuncs).Parse(widget.Template)
if err != nil {
return fmt.Errorf("parsing template: %w", err)
}

View file

@ -114,7 +114,6 @@ func fetchAdguardStats(instanceURL, username, password string) (*dnsStats, error
requestURL := strings.TrimRight(instanceURL, "/") + "/control/stats"
request, err := http.NewRequest("GET", requestURL, nil)
if err != nil {
return nil, err
}
@ -122,7 +121,6 @@ func fetchAdguardStats(instanceURL, username, password string) (*dnsStats, error
request.SetBasicAuth(username, password)
responseJson, err := decodeJsonFromRequest[adguardStatsResponse](defaultClient, request)
if err != nil {
return nil, err
}
@ -235,7 +233,6 @@ func (p *piholeTopBlockedDomains) UnmarshalJSON(data []byte) error {
temp := make(map[string]int)
err := json.Unmarshal(data, &temp)
if err != nil {
*p = make(piholeTopBlockedDomains)
} else {
@ -254,13 +251,11 @@ func fetchPiholeStats(instanceURL, token string) (*dnsStats, error) {
"/admin/api.php?summaryRaw&topItems&overTimeData10mins&auth=" + token
request, err := http.NewRequest("GET", requestURL, nil)
if err != nil {
return nil, err
}
responseJson, err := decodeJsonFromRequest[piholeStatsResponse](defaultClient, request)
if err != nil {
return nil, err
}

View file

@ -32,10 +32,8 @@ func (widget *extensionWidget) initialize() error {
return errors.New("URL is required")
}
_, err := url.Parse(widget.URL)
if err != nil {
return err
if _, err := url.Parse(widget.URL); err != nil {
return fmt.Errorf("parsing URL: %v", err)
}
return nil
@ -117,7 +115,6 @@ func fetchExtension(options extensionRequestOptions) (extension, error) {
request.URL.RawQuery = query.Encode()
response, err := http.DefaultClient.Do(request)
if err != nil {
slog.Error("Failed fetching extension", "url", options.URL, "error", err)
return extension{}, fmt.Errorf("%w: request failed: %w", errNoContent, err)
@ -126,7 +123,6 @@ func fetchExtension(options extensionRequestOptions) (extension, error) {
defer response.Body.Close()
body, err := io.ReadAll(response.Body)
if err != nil {
slog.Error("Failed reading response body of extension", "url", options.URL, "error", err)
return extension{}, fmt.Errorf("%w: could not read body: %w", errNoContent, err)

View file

@ -78,7 +78,6 @@ type hackerNewsPostResponseJson struct {
func fetchHackerNewsPostIds(sort string) ([]int, error) {
request, _ := http.NewRequest("GET", fmt.Sprintf("https://hacker-news.firebaseio.com/v0/%sstories.json", sort), nil)
response, err := decodeJsonFromRequest[[]int](defaultClient, request)
if err != nil {
return nil, fmt.Errorf("%w: could not fetch list of post IDs", errNoContent)
}
@ -97,7 +96,6 @@ func fetchHackerNewsPostsFromIds(postIds []int, commentsUrlTemplate string) (for
task := decodeJsonFromRequestTask[hackerNewsPostResponseJson](defaultClient)
job := newJob(task, requests).withWorkers(30)
results, errs, err := workerPoolDo(job)
if err != nil {
return nil, err
}
@ -142,7 +140,6 @@ func fetchHackerNewsPostsFromIds(postIds []int, commentsUrlTemplate string) (for
func fetchHackerNewsPosts(sort string, limit int, commentsUrlTemplate string) (forumPostList, error) {
postIds, err := fetchHackerNewsPostIds(sort)
if err != nil {
return nil, err
}

View file

@ -23,9 +23,7 @@ func (widget *iframeWidget) initialize() error {
return errors.New("source is required")
}
_, err := url.Parse(widget.Source)
if err != nil {
if _, err := url.Parse(widget.Source); err != nil {
return fmt.Errorf("parsing URL: %v", err)
}

View file

@ -76,13 +76,11 @@ type lobstersFeedResponseJson []lobstersPostResponseJson
func fetchLobstersPostsFromFeed(feedUrl string) (forumPostList, error) {
request, err := http.NewRequest("GET", feedUrl, nil)
if err != nil {
return nil, err
}
feed, err := decodeJsonFromRequest[lobstersFeedResponseJson](defaultClient, request)
if err != nil {
return nil, err
}
@ -138,7 +136,6 @@ func fetchLobstersPosts(customURL string, instanceURL string, sortBy string, tag
}
posts, err := fetchLobstersPostsFromFeed(feedUrl)
if err != nil {
return nil, err
}

View file

@ -114,7 +114,6 @@ func fetchMarketsDataFromYahoo(marketRequests []marketRequest) (marketList, erro
job := newJob(decodeJsonFromRequestTask[marketResponseJson](defaultClient), requests)
responses, errs, err := workerPoolDo(job)
if err != nil {
return nil, fmt.Errorf("%w: %v", errNoContent, err)
}

View file

@ -129,7 +129,6 @@ func fetchSiteStatusTask(statusRequest *SiteStatusRequest) (SiteStatus, error) {
url = statusRequest.URL
}
request, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
return SiteStatus{
Error: err,
@ -169,7 +168,6 @@ func fetchSiteStatusTask(statusRequest *SiteStatusRequest) (SiteStatus, error) {
func fetchStatusForSites(requests []*SiteStatusRequest) ([]SiteStatus, error) {
job := newJob(fetchSiteStatusTask, requests).withWorkers(20)
results, _, err := workerPoolDo(job)
if err != nil {
return nil, err
}

View file

@ -185,7 +185,6 @@ func fetchSubredditPosts(subreddit, sort, topPeriod, search, commentsUrlTemplate
}
request, err := http.NewRequest("GET", requestUrl, nil)
if err != nil {
return nil, err
}
@ -193,7 +192,6 @@ func fetchSubredditPosts(subreddit, sort, topPeriod, search, commentsUrlTemplate
// Required to increase rate limit, otherwise Reddit randomly returns 429 even after just 2 requests
setBrowserUserAgentHeader(request)
responseJson, err := decodeJsonFromRequest[subredditResponseJson](defaultClient, request)
if err != nil {
return nil, err
}

View file

@ -144,7 +144,6 @@ type releaseRequest struct {
func fetchLatestReleases(requests []*releaseRequest) (appReleaseList, error) {
job := newJob(fetchLatestReleaseTask, requests).withWorkers(20)
results, errs, err := workerPoolDo(job)
if err != nil {
return nil, err
}
@ -216,7 +215,6 @@ func fetchLatestGithubRelease(request *releaseRequest) (*appRelease, error) {
}
response, err := decodeJsonFromRequest[githubReleaseLatestResponseJson](defaultClient, httpRequest)
if err != nil {
return nil, err
}
@ -266,7 +264,6 @@ func fetchLatestDockerHubRelease(request *releaseRequest) (*appRelease, error) {
}
httpRequest, err := http.NewRequest("GET", requestURL, nil)
if err != nil {
return nil, err
}
@ -279,7 +276,6 @@ func fetchLatestDockerHubRelease(request *releaseRequest) (*appRelease, error) {
if len(tagParts) == 1 {
response, err := decodeJsonFromRequest[dockerHubRepositoryTagsResponse](defaultClient, httpRequest)
if err != nil {
return nil, err
}
@ -291,7 +287,6 @@ func fetchLatestDockerHubRelease(request *releaseRequest) (*appRelease, error) {
tag = &response.Results[0]
} else {
response, err := decodeJsonFromRequest[dockerHubRepositoryTagResponse](defaultClient, httpRequest)
if err != nil {
return nil, err
}
@ -343,7 +338,6 @@ func fetchLatestGitLabRelease(request *releaseRequest) (*appRelease, error) {
),
nil,
)
if err != nil {
return nil, err
}
@ -353,7 +347,6 @@ func fetchLatestGitLabRelease(request *releaseRequest) (*appRelease, error) {
}
response, err := decodeJsonFromRequest[gitlabReleaseResponseJson](defaultClient, httpRequest)
if err != nil {
return nil, err
}
@ -387,10 +380,10 @@ func fetchLatestCodebergRelease(request *releaseRequest) (*appRelease, error) {
}
response, err := decodeJsonFromRequest[codebergReleaseResponseJson](defaultClient, httpRequest)
if err != nil {
return nil, err
}
return &appRelease{
Source: releaseSourceCodeberg,
Name: request.repository,

View file

@ -186,7 +186,6 @@ func fetchItemsFromRSSFeedTask(request RSSFeedRequest) ([]rssFeedItem, error) {
}
feed, err := feedParser.ParseString(string(body))
if err != nil {
return nil, err
}
@ -206,7 +205,6 @@ func fetchItemsFromRSSFeedTask(request RSSFeedRequest) ([]rssFeedItem, error) {
rssItem.Link = item.Link
} else {
parsedUrl, err := url.Parse(feed.Link)
if err != nil {
parsedUrl, err = url.Parse(request.Url)
}
@ -317,7 +315,6 @@ func findThumbnailInItemExtensions(item *gofeed.Item) string {
func fetchItemsFromRSSFeeds(requests []RSSFeedRequest) (rssFeedItemList, error) {
job := newJob(fetchItemsFromRSSFeedTask, requests).withWorkers(10)
feeds, errs, err := workerPoolDo(job)
if err != nil {
return nil, fmt.Errorf("%w: %v", errNoContent, err)
}

View file

@ -140,7 +140,6 @@ func fetchChannelFromTwitchTask(channel string) (twitchChannel, error) {
request.Header.Add("Client-ID", twitchGqlClientId)
response, err := decodeJsonFromRequest[[]twitchOperationResponse](defaultClient, request)
if err != nil {
return result, err
}
@ -155,16 +154,12 @@ func fetchChannelFromTwitchTask(channel string) (twitchChannel, error) {
for i := range response {
switch response[i].Extensions.OperationName {
case "ChannelShell":
err = json.Unmarshal(response[i].Data, &channelShell)
if err != nil {
return result, fmt.Errorf("failed to unmarshal channel shell: %w", err)
if err = json.Unmarshal(response[i].Data, &channelShell); err != nil {
return result, fmt.Errorf("unmarshalling channel shell: %w", err)
}
case "StreamMetadata":
err = json.Unmarshal(response[i].Data, &streamMetadata)
if err != nil {
return result, fmt.Errorf("failed to unmarshal stream metadata: %w", err)
if err = json.Unmarshal(response[i].Data, &streamMetadata); err != nil {
return result, fmt.Errorf("unmarshalling stream metadata: %w", err)
}
default:
return result, fmt.Errorf("unknown operation name: %s", response[i].Extensions.OperationName)
@ -211,7 +206,6 @@ func fetchChannelsFromTwitch(channelLogins []string) (twitchChannelList, error)
job := newJob(fetchChannelFromTwitchTask, channelLogins).withWorkers(10)
channels, errs, err := workerPoolDo(job)
if err != nil {
return result, err
}

View file

@ -83,7 +83,6 @@ func fetchTopGamesFromTwitch(exclude []string, limit int) ([]twitchCategory, err
request, _ := http.NewRequest("POST", twitchGqlEndpoint, reader)
request.Header.Add("Client-ID", twitchGqlClientId)
response, err := decodeJsonFromRequest[[]twitchDirectoriesOperationResponse](defaultClient, request)
if err != nil {
return nil, err
}

View file

@ -40,17 +40,15 @@ func setBrowserUserAgentHeader(request *http.Request) {
}
func decodeJsonFromRequest[T any](client RequestDoer, request *http.Request) (T, error) {
response, err := client.Do(request)
var result T
response, err := client.Do(request)
if err != nil {
return result, err
}
defer response.Body.Close()
body, err := io.ReadAll(response.Body)
if err != nil {
return result, err
}
@ -67,7 +65,6 @@ func decodeJsonFromRequest[T any](client RequestDoer, request *http.Request) (T,
}
err = json.Unmarshal(body, &result)
if err != nil {
return result, err
}
@ -83,17 +80,15 @@ func decodeJsonFromRequestTask[T any](client RequestDoer) func(*http.Request) (T
// TODO: tidy up, these are a copy of the above but with a line changed
func decodeXmlFromRequest[T any](client RequestDoer, request *http.Request) (T, error) {
response, err := client.Do(request)
var result T
response, err := client.Do(request)
if err != nil {
return result, err
}
defer response.Body.Close()
body, err := io.ReadAll(response.Body)
if err != nil {
return result, err
}
@ -110,7 +105,6 @@ func decodeXmlFromRequest[T any](client RequestDoer, request *http.Request) (T,
}
err = xml.Unmarshal(body, &result)
if err != nil {
return result, err
}

View file

@ -84,7 +84,6 @@ type youtubeFeedResponseXml struct {
func parseYoutubeFeedTime(t string) time.Time {
parsedTime, err := time.Parse("2006-01-02T15:04:05-07:00", t)
if err != nil {
return time.Now()
}
@ -130,7 +129,6 @@ func FetchYoutubeChannelUploads(channelIds []string, videoUrlTemplate string, in
job := newJob(decodeXmlFromRequestTask[youtubeFeedResponseXml](defaultClient), requests).withWorkers(30)
responses, errs, err := workerPoolDo(job)
if err != nil {
return nil, fmt.Errorf("%w: %v", errNoContent, err)
}

View file

@ -59,7 +59,6 @@ func (widget *weatherWidget) initialize() error {
func (widget *weatherWidget) update(ctx context.Context) {
if widget.Place == nil {
place, err := fetchOpenMeteoPlaceFromName(widget.Location)
if err != nil {
widget.withError(err).scheduleEarlyUpdate()
return
@ -174,7 +173,6 @@ func fetchOpenMeteoPlaceFromName(location string) (*openMeteoPlaceResponseJson,
requestUrl := fmt.Sprintf("https://geocoding-api.open-meteo.com/v1/search?name=%s&count=10&language=en&format=json", url.QueryEscape(location))
request, _ := http.NewRequest("GET", requestUrl, nil)
responseJson, err := decodeJsonFromRequest[openMeteoPlacesResponseJson](defaultClient, request)
if err != nil {
return nil, fmt.Errorf("fetching places data: %v", err)
}
@ -203,7 +201,6 @@ func fetchOpenMeteoPlaceFromName(location string) (*openMeteoPlaceResponseJson,
}
loc, err := time.LoadLocation(place.Timezone)
if err != nil {
return nil, fmt.Errorf("loading location: %v", err)
}
@ -236,7 +233,6 @@ func fetchWeatherForOpenMeteoPlace(place *openMeteoPlaceResponseJson, units stri
requestUrl := "https://api.open-meteo.com/v1/forecast?" + query.Encode()
request, _ := http.NewRequest("GET", requestUrl, nil)
responseJson, err := decodeJsonFromRequest[openMeteoWeatherResponseJson](defaultClient, request)
if err != nil {
return nil, fmt.Errorf("%w: %v", errNoContent, err)
}

View file

@ -97,7 +97,6 @@ func (w *widgets) UnmarshalYAML(node *yaml.Node) error {
}
widget, err := newWidget(meta.Type)
if err != nil {
return err
}
@ -201,7 +200,6 @@ func (w *widgetBase) setProviders(providers *widgetProviders) {
func (w *widgetBase) renderTemplate(data any, t *template.Template) template.HTML {
w.templateBuffer.Reset()
err := t.Execute(&w.templateBuffer, data)
if err != nil {
w.ContentAvailable = false
w.Error = err