2 files changed,
16 insertions(+),
6 deletions(-)
Author:
Oleksandr Smirnov
olexsmir@gmail.com
Committed at:
2025-12-28 19:20:24 +0200
Change ID:
vvoxvvuvkkluvtwxqyorrlnulnzkzurr
Parent:
d588b2a
jump to
| M | app.go |
| M | internal/freshrss/worker.go |
M
app.go
@@ -52,7 +52,7 @@ if err != nil {
return nil, err } - fw := freshrss.NewWorker(fr, store, writeToken) + fw := freshrss.NewWorker(fr, store, writeToken, cfg.FreshRSS.Host) return &app{ cfg: cfg,
M
internal/freshrss/worker.go
@@ -3,6 +3,8 @@
import ( "context" "log/slog" + "net" + "net/url" "sync" "time"@@ -13,14 +15,16 @@ type Worker struct {
api *Client store *store.Sqlite + apiServer string writeToken string } -func NewWorker(api *Client, store *store.Sqlite, writeToken string) *Worker { +func NewWorker(api *Client, store *store.Sqlite, writeToken, apiServer string) *Worker { return &Worker{ api: api, store: store, writeToken: writeToken, + apiServer: apiServer, } }@@ -34,7 +38,7 @@ select {
case <-ctx.Done(): return default: - if !w.isNetworkAvailable(ctx) { + if !w.isNetworkAvailable() { slog.Info("worker: no internet connection") continue }@@ -66,9 +70,15 @@ }
} } -// TODO: implement me -func (Worker) isNetworkAvailable(_ context.Context) bool { - return true +func (w *Worker) isNetworkAvailable() bool { + u, err := url.Parse(w.apiServer) + if err != nil { + slog.Error("invalid api url", "url", w.apiServer, "err", err) + return false + } + + _, err = net.LookupHost(u.Host) + return err == nil } func (w *Worker) pendingReads(ctx context.Context) error {