@@ -19,10 +19,12 @@ import (
19
19
"github.com/efixler/envflags"
20
20
"github.com/efixler/scrape/fetch"
21
21
"github.com/efixler/scrape/fetch/trafilatura"
22
+ "github.com/efixler/scrape/internal"
22
23
"github.com/efixler/scrape/internal/auth"
23
24
"github.com/efixler/scrape/internal/cmd"
24
25
"github.com/efixler/scrape/internal/headless"
25
26
"github.com/efixler/scrape/internal/server"
27
+ "github.com/efixler/scrape/internal/storage"
26
28
"github.com/efixler/scrape/resource"
27
29
"github.com/efixler/scrape/ua"
28
30
"github.com/efixler/webutil/graceful"
@@ -50,23 +52,26 @@ func main() {
50
52
ctx , cancel := context .WithCancel (context .Background ())
51
53
dbh := dbFlags .MustDatabase ()
52
54
dbFlags = nil
53
- normalClient := fetch .MustClient (fetch .WithUserAgent (userAgent .Get ().String ()))
55
+ directClient := fetch .MustClient (fetch .WithUserAgent (userAgent .Get ().String ()))
54
56
var headlessFetcher fetch.URLFetcher = nil
55
57
if headlessEnabled .Get () {
56
58
headlessClient := headless .MustChromeClient (ctx , userAgent .Get ().String (), 6 )
57
59
headlessFetcher = trafilatura .MustNew (headlessClient )
58
60
}
59
61
60
- // TODO: Implement options pattern for NewScrapeServer
61
- ss , _ := server .NewScrapeServer (
62
+ ss := server .MustScrapeServer (
62
63
ctx ,
63
- dbh ,
64
- trafilatura .MustNew (normalClient ),
65
- headlessFetcher ,
64
+ server .WithURLFetcher (
65
+ internal .NewStorageBackedFetcher (
66
+ trafilatura .MustNew (directClient ),
67
+ storage .NewURLDataStore (dbh ),
68
+ ),
69
+ ),
70
+ server .WithHeadlessIf (headlessFetcher ),
71
+ server .WithAuthorizationIf (* signingKey .Get ()),
66
72
)
67
73
68
- if sk := * signingKey .Get (); len (sk ) > 0 {
69
- ss .SigningKey = sk
74
+ if ss .AuthEnabled () {
70
75
slog .Info ("scrape-server authorization via JWT is enabled" )
71
76
} else {
72
77
slog .Info ("scrape-server authorization is disabled, running in open access mode" )
0 commit comments