aboutsummaryrefslogtreecommitdiff
path: root/backend/internal/ibd/transport/scrapfly/options.go
blob: f16a4b0e1b74aabe29acf991f05682525d1612a2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package scrapfly

const BaseURL = "https://api.scrapfly.io/scrape"

var defaultScrapeOptions = ScrapeOptions{
	baseURL:   BaseURL,
	country:   nil,
	asp:       true,
	proxyPool: ProxyPoolDatacenter,
	renderJS:  false,
	cache:     false,
}

type ScrapeOption func(*ScrapeOptions)

type ScrapeOptions struct {
	baseURL   string
	country   *string
	asp       bool
	proxyPool ProxyPool
	renderJS  bool
	cache     bool
	debug     bool
}

type ProxyPool uint8

const (
	ProxyPoolDatacenter ProxyPool = iota
	ProxyPoolResidential
)

func (p ProxyPool) String() string {
	switch p {
	case ProxyPoolDatacenter:
		return "public_datacenter_pool"
	case ProxyPoolResidential:
		return "public_residential_pool"
	default:
		panic("invalid proxy pool")
	}
}

func WithCountry(country string) ScrapeOption {
	return func(o *ScrapeOptions) {
		o.country = &country
	}
}

func WithASP(asp bool) ScrapeOption {
	return func(o *ScrapeOptions) {
		o.asp = asp
	}
}

func WithProxyPool(proxyPool ProxyPool) ScrapeOption {
	return func(o *ScrapeOptions) {
		o.proxyPool = proxyPool
	}
}

func WithRenderJS(jsRender bool) ScrapeOption {
	return func(o *ScrapeOptions) {
		o.renderJS = jsRender
	}
}

func WithCache(cache bool) ScrapeOption {
	return func(o *ScrapeOptions) {
		o.cache = cache
	}
}

func WithDebug(debug bool) ScrapeOption {
	return func(o *ScrapeOptions) {
		o.debug = debug
	}
}

func WithBaseURL(baseURL string) ScrapeOption {
	return func(o *ScrapeOptions) {
		o.baseURL = baseURL
	}
}