1
0
mirror of https://github.com/MontFerret/ferret.git synced 2025-04-23 12:18:46 +02:00
2018-09-18 16:42:38 -04:00

52 lines
883 B
Go

package browser
import (
"context"
"github.com/MontFerret/ferret/pkg/runtime/values"
"github.com/mafredri/cdp/devtool"
"github.com/mafredri/cdp/rpcc"
)
type (
CdpDriver struct {
address string
}
CdpConnection struct {
target *devtool.Target
core *rpcc.Conn
}
)
func NewDriver(conn string) *CdpDriver {
return &CdpDriver{
address: conn,
}
}
func (drv *CdpDriver) GetDocument(ctx context.Context, url string) (values.HtmlNode, error) {
ctx, cancel := context.WithTimeout(ctx, DefaultTimeout)
defer cancel()
devt := devtool.New(drv.address)
target, err := devt.CreateURL(ctx, url)
if err != nil {
return nil, err
}
conn, err := rpcc.DialContext(ctx, target.WebSocketDebuggerURL)
if err != nil {
return nil, err
}
return NewHtmlDocument(ctx, conn, url)
}
func (drv *CdpDriver) Close() error {
// TODO: Do we need this method?
return nil
}