-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathconnect.go
74 lines (60 loc) · 1.36 KB
/
connect.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
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
package chromy
import (
"context"
"net/http"
"time"
"github.com/mafredri/cdp/devtool"
)
// Connect return a connector to specified remote debugging url
func Connect(opt ...Option) *Connector {
c := &Connector{
remoteDebuggingURL: defaultRemoteDebuggingURL,
timeout: defaultConnectTimeout,
actionTimeout: defatulActionTimeout,
taskStepTimeount: defatulTaskStepTimeout,
}
for _, o := range opt {
o(c)
}
c.devt = devtool.New(c.remoteDebuggingURL, devtool.WithClient(&http.Client{
Timeout: c.timeout,
}))
return c
}
// Option connect option
type Option func(*Connector)
// RemoteDebuggingURL mo
func RemoteDebuggingURL(remoteURL string) Option {
return func(c *Connector) {
c.remoteDebuggingURL = remoteURL
}
}
func ConnectTimeout(timeout time.Duration) Option {
return func(c *Connector) {
c.timeout = timeout
}
}
func ActionTimeout(timeout time.Duration) Option {
return func(c *Connector) {
if timeout > 0 {
c.actionTimeout = timeout
}
}
}
func TaskStepTimeout(timeout time.Duration) Option {
return func(c *Connector) {
if timeout > 0 {
c.taskStepTimeount = timeout
}
}
}
type Connector struct {
remoteDebuggingURL string
timeout,
actionTimeout time.Duration
taskStepTimeount time.Duration
devt *devtool.DevTools
}
func (c *Connector) New(ctx context.Context) (*Target, error) {
return newTarget(ctx, c)
}