/
browser.go
49 lines (39 loc) · 1.21 KB
/
browser.go
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
package connectors
import (
"github.com/PxyUp/fitter/pkg/builder"
"github.com/PxyUp/fitter/pkg/config"
"github.com/PxyUp/fitter/pkg/logger"
"github.com/PxyUp/fitter/pkg/utils"
)
type browserConnector struct {
cfg *config.BrowserConnectorConfig
logger logger.Logger
url string
}
func NewBrowser(url string, cfg *config.BrowserConnectorConfig) *browserConnector {
return &browserConnector{
cfg: cfg,
url: url,
logger: logger.Null,
}
}
func (c *browserConnector) WithLogger(logger logger.Logger) *browserConnector {
c.logger = logger
return c
}
func (c *browserConnector) Get(parsedValue builder.Interfacable, index *uint32, input builder.Interfacable) ([]byte, error) {
formattedURL := utils.Format(c.url, parsedValue, index, input)
if formattedURL == "" {
return nil, errEmpty
}
if c.cfg.Chromium != nil {
return getFromChromium(formattedURL, c.cfg.Chromium, c.logger.With("emulator", "chromium"))
}
if c.cfg.Docker != nil {
return getFromDocker(formattedURL, c.cfg.Docker, c.logger.With("emulator", "docker"))
}
if c.cfg.Playwright != nil {
return getFromPlaywright(formattedURL, c.cfg.Playwright, parsedValue, index, input, c.logger.With("emulator", "playwright"))
}
return nil, nil
}