Fix CS
This commit is contained in:
parent
1d9ae72c81
commit
02cbb5f812
23 changed files with 11 additions and 75 deletions
|
@ -99,7 +99,6 @@ func (d *durationField) UnmarshalYAML(node *yaml.Node) error {
|
|||
}
|
||||
|
||||
duration, err := strconv.Atoi(matches[1])
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -12,7 +12,6 @@ var buildVersion = "dev"
|
|||
|
||||
func Main() int {
|
||||
options, err := parseCliOptions()
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return 1
|
||||
|
|
|
@ -25,7 +25,6 @@ func extractDomainFromUrl(u string) string {
|
|||
}
|
||||
|
||||
parsed, err := url.Parse(u)
|
||||
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue