cdp

package
v0.12.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 20, 2024 License: MIT Imports: 31 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RunnerFactoryType = FactoryType("runner")
	PageFactoryType   = FactoryType("page")
)

runner - start new browser instance. runner - open browser tab.

View Source
const (
	TempDirVariable = "%{TMP_DIR}"
	TempIDVariable  = "%{TMP_ID}"
)

Substitution variables.

View Source
const (
	DefaultRenderTimeout = time.Second * 30
)

Default values for RenderConfig.

Variables

This section is empty.

Functions

func ListAllowedVariables

func ListAllowedVariables() []string

ListAllowedVariables return all known variables.

Types

type BorrowFn

type BorrowFn func(context.Context, PageProvider) error

BorrowFn called when borrowed CDP client.

type BorrowStats

type BorrowStats struct {
	Active      int
	Idle        int
	Destroyed   int
	Invalidated int
}

BorrowStats returned by Borrower.Stats().

type Borrower

type Borrower interface {
	Borrow(context.Context, BorrowFn) error
	Stats() BorrowStats
	PoolType() string
}

Borrower of CDP clients.

type BrowserData

type BrowserData struct {
	// contains filtered or unexported fields
}

BrowserData passed to browser command line arguments.

func (*BrowserData) Delete

func (data *BrowserData) Delete() error

Delete temporal browser data.

type BrowserRunner

type BrowserRunner struct {
	// contains filtered or unexported fields
}

BrowserRunner run browser with command and args, and parse debugger WebSocket URL from stdout.

func NewBrowserRunner

func NewBrowserRunner(
	config RunnerConfig,
	logger log.Logger,
	tracerProvider trace.TracerProvider,
) (*BrowserRunner, error)

NewBrowserRunner constructor.

func (*BrowserRunner) Run

func (runner *BrowserRunner) Run(ctx context.Context) (devToolURL string, err error)

Run browser process and scan stdout for WebSocket URL.

func (*BrowserRunner) Stop

func (runner *BrowserRunner) Stop(ctx context.Context) error

Stop browser process.

type CmdRunnerBuilder

type CmdRunnerBuilder struct {
	// contains filtered or unexported fields
}

CmdRunnerBuilder default implementation of RunnerFactory.

func NewCmdRunnerBuilder

func NewCmdRunnerBuilder(
	runnerConfig RunnerConfig,
	logger log.Logger,
	tracerProvider trace.TracerProvider,
) *CmdRunnerBuilder

NewCmdRunnerBuilder constructor.

func (*CmdRunnerBuilder) BuildRunner

func (runnerBuilder *CmdRunnerBuilder) BuildRunner() (Runner, error)

BuildRunner with runner config.

type DevToolsURLNotFoundError

type DevToolsURLNotFoundError struct{}

DevToolsURLNotFoundError browser not return DevTools URL.

func NewDevToolsURLNotFoundError

func NewDevToolsURLNotFoundError() *DevToolsURLNotFoundError

NewDevToolsURLNotFoundError constructor.

func (*DevToolsURLNotFoundError) Error

type Factory

type Factory struct {
	// contains filtered or unexported fields
}

Factory make CDP client.

func NewFactory

func NewFactory(
	ctx context.Context,
	logger log.Logger,
	runnerFactory RunnerBuilder,
	config FactoryConfig,
	tracerProvider trace.TracerProvider,
) (*Factory, error)

NewFactory constructor.

func ProvideFactory added in v0.11.1

func ProvideFactory(
	ctx context.Context,
	logger log.Logger,
	runnerFactory RunnerBuilder,
	config FactoryConfig,
	tracerProvider trace.TracerProvider,
) (*Factory, func(), error)

ProvideFactory like NewFactory but return safe close function.

func (*Factory) ActivateObject

func (factory *Factory) ActivateObject(
	ctx context.Context,
	object *pool.PooledObject,
) error

ActivateObject enable page.

func (*Factory) Close

func (factory *Factory) Close(ctx context.Context) error

Close factory (stop runner).

func (*Factory) DestroyObject

func (factory *Factory) DestroyObject(ctx context.Context, object *pool.PooledObject) (
	err error,
)

DestroyObject destroy CDP client.

func (*Factory) MakeObject

func (factory *Factory) MakeObject(ctx context.Context) (*pool.PooledObject, error)

MakeObject create CDP client.

func (*Factory) PassivateObject

func (factory *Factory) PassivateObject(
	ctx context.Context,
	object *pool.PooledObject,
) error

PassivateObject disable page.

func (*Factory) Type

func (factory *Factory) Type() string

Type of factory.

func (*Factory) ValidateObject

func (factory *Factory) ValidateObject(
	ctx context.Context,
	object *pool.PooledObject,
) bool

ValidateObject validate CDP client (reload page).

type FactoryConfig

type FactoryConfig struct {
	MaxGetPageAttempts int
	GetPageRetryDelay  time.Duration
	MaxUsageCount      int
	RPCBufferSize      int
	FactoryType        FactoryType
}

FactoryConfig for browser factory pool.

func DefaultFactoryConfig added in v0.7.2

func DefaultFactoryConfig() FactoryConfig

DefaultFactoryConfig provider.

revive:disable:add-constant

func (*FactoryConfig) BindFlags added in v0.9.0

func (config *FactoryConfig) BindFlags() []cli.Flag

BindFlags bind factory config flags.

type FactoryType

type FactoryType string

FactoryType define used factory type (new browser instance or new tab into browser).

func FactoryTypeList

func FactoryTypeList() []FactoryType

FactoryTypeList return all valid factory types.

func (*FactoryType) Set

func (factoryType *FactoryType) Set(value string) error

Set value from flags.

func (FactoryType) String

func (factoryType FactoryType) String() string

type LifecycleEventClient

type LifecycleEventClient interface {
	page.LifecycleEventClient
}

LifecycleEventClient alias of page.LifecycleEventClient for mocks.

type Page

Page alias of cdp.Page for mocks.

type PageCdpWrapperFactory

type PageCdpWrapperFactory struct {
	// contains filtered or unexported fields
}

PageCdpWrapperFactory create page (tab) on browser instance.

func NewPageCdpWrapperFactory

func NewPageCdpWrapperFactory(
	ctx context.Context,
	logger log.Logger,
	runnerBuilder RunnerBuilder,
	config FactoryConfig,
	tracerProvider trace.TracerProvider,
) (*PageCdpWrapperFactory, error)

NewPageCdpWrapperFactory constructor.

func (*PageCdpWrapperFactory) Close

func (factory *PageCdpWrapperFactory) Close(ctx context.Context) error

Close factory (stop browser instance).

func (*PageCdpWrapperFactory) Destroy

func (factory *PageCdpWrapperFactory) Destroy(ctx context.Context, client *PageWrapper) (
	err error,
)

Destroy page.

func (*PageCdpWrapperFactory) Make

func (factory *PageCdpWrapperFactory) Make(ctx context.Context) (*PageWrapper, error)

Make create new page and open debugger endpoint.

func (*PageCdpWrapperFactory) Type

func (*PageCdpWrapperFactory) Type() string

Type of factory.

type PageProvider

type PageProvider interface {
	GetPage() Page
	GetDevTools() *devtool.DevTools
}

PageProvider define *CdpWrapper interface.

type PageWrapper

type PageWrapper struct {
	// contains filtered or unexported fields
}

PageWrapper argument for borrower.

func (*PageWrapper) GetDevTools

func (wrapper *PageWrapper) GetDevTools() *devtool.DevTools

GetDevTools returns wrapped *devTools.DevTools object.

func (*PageWrapper) GetPage

func (wrapper *PageWrapper) GetPage() Page

GetPage returns wrapped page object.

type PageWrapperFactory

type PageWrapperFactory interface {
	Make(context.Context) (*PageWrapper, error)
	Destroy(context.Context, *PageWrapper) error
	Close(context.Context) error
	Type() string
}

PageWrapperFactory define factory for CDpWrapper instances.

type PoolBorrower

type PoolBorrower struct {
	// contains filtered or unexported fields
}

PoolBorrower borrow CDP client from pool.

func ProvidePoolBorrower

func ProvidePoolBorrower(
	ctx context.Context,
	clientFactory TypedFactory,
	config PoolConfig,
	tracerProvider trace.TracerProvider,
) (*PoolBorrower, func())

ProvidePoolBorrower build borrower pool and start it.

func (*PoolBorrower) Borrow

func (poolBorrower *PoolBorrower) Borrow(ctx context.Context, fn BorrowFn) (err error)

Borrow CDP client.

func (*PoolBorrower) PoolType

func (poolBorrower *PoolBorrower) PoolType() string

PoolType return type of internal pool.

func (*PoolBorrower) Stats

func (poolBorrower *PoolBorrower) Stats() BorrowStats

Stats from internal pool.

type PoolConfig

type PoolConfig struct {
	MaxTotal int
	MinIdle  int
	MaxIdle  int

	TimeBetweenEviction time.Duration
	BorrowTimeout       time.Duration
	RepayTimeout        time.Duration
}

PoolConfig for PDFRender object pool.

func DefaultPoolConfig added in v0.7.2

func DefaultPoolConfig() PoolConfig

DefaultPoolConfig provider.

func (*PoolConfig) BindFlags added in v0.9.0

func (config *PoolConfig) BindFlags() []cli.Flag

BindFlags bind flags to config.

type Render

type Render struct {
	// contains filtered or unexported fields
}

Render is CeDT based PDFRender implementation.

func NewRender

func NewRender(
	ctx context.Context,
	pool Borrower,
	renderConfig RenderConfig,
	store server.Store,
	internalServer server.Server,
	tracerProvider trace.TracerProvider,
) *Render

NewRender constructor.

revive:disable:argument-limit

func (*Render) Info

func (render *Render) Info(
	ctx context.Context,
) (*pdfrender.RenderInfo, error)

Info about render.

func (*Render) RenderPDF

func (render *Render) RenderPDF(
	ctx context.Context,
	config *pdfrender.Config,
	document pdfrender.Document,
) ([]byte, error)

RenderPDF via CDT.

type RenderConfig

type RenderConfig struct {
	WaitLifecycleEvent pdfrender.WaitLifecycleEvent
	RenderTimeout      time.Duration
	RetryAttempts      int
}

RenderConfig for BrowserRender.

func DefaultRenderConfig

func DefaultRenderConfig() RenderConfig

DefaultRenderConfig return RenderConfig with default values.

func (*RenderConfig) BindFlags added in v0.9.0

func (config *RenderConfig) BindFlags() []cli.Flag

BindFlags binds flags to config.

type Runner

type Runner interface {
	Run(context.Context) (wsURL string, err error)
	Stop(context.Context) error
}

Runner for browser instance.

type RunnerBuilder

type RunnerBuilder interface {
	BuildRunner() (Runner, error)
}

RunnerBuilder build runners.

type RunnerCdpWrapperFactory

type RunnerCdpWrapperFactory struct {
	// contains filtered or unexported fields
}

RunnerCdpWrapperFactory make and destroy runner (browser instance) CdpWrapper's.

func NewRunnerCdpWrapperFactory

func NewRunnerCdpWrapperFactory(
	logger log.Logger,
	runnerBuilder RunnerBuilder,
	config FactoryConfig,
	tracerProvider trace.TracerProvider,
) *RunnerCdpWrapperFactory

NewRunnerCdpWrapperFactory constructor.

func (*RunnerCdpWrapperFactory) Close

Close factory (stop runner).

func (*RunnerCdpWrapperFactory) Destroy

func (factory *RunnerCdpWrapperFactory) Destroy(ctx context.Context, client *PageWrapper) (
	err error,
)

Destroy CdpWrapper instance.

func (*RunnerCdpWrapperFactory) Make

func (factory *RunnerCdpWrapperFactory) Make(ctx context.Context) (*PageWrapper, error)

Make CDP wrapper instance.

func (*RunnerCdpWrapperFactory) Type

Type of factory.

type RunnerConfig

type RunnerConfig struct {
	Command string
	Args    []string
}

RunnerConfig have command and additions args for run browser.

func DefaultRunnerConfig added in v0.9.0

func DefaultRunnerConfig() RunnerConfig

DefaultRunnerConfig default RunnerConfig.

func (*RunnerConfig) BindFlags added in v0.9.0

func (config *RunnerConfig) BindFlags() []cli.Flag

BindFlags bind RunnerConfig to cli flags.

type TracedPage

type TracedPage struct {
	// contains filtered or unexported fields
}

TracedPage wrap cdp.Page with tracing.

func TracePage

func TracePage(cdpPage cdp.Page, conn *rpcc.Conn, tracerProvider trace.TracerProvider) *TracedPage

TracePage wrap cdp.Page.

func (*TracedPage) Disable

func (tracedPage *TracedPage) Disable(ctx context.Context) error

Disable wraps cdp.Page.Disable with span.

func (*TracedPage) Enable

func (tracedPage *TracedPage) Enable(ctx context.Context) error

Enable wraps cdp.Page.Enable with span.

func (*TracedPage) GetNavigationHistory added in v0.11.1

func (tracedPage *TracedPage) GetNavigationHistory(
	ctx context.Context,
) (*page.GetNavigationHistoryReply, error)

GetNavigationHistory wraps cdp.Page.GetNavigationHistory with span.

func (*TracedPage) LifecycleEvent

func (tracedPage *TracedPage) LifecycleEvent(
	ctx context.Context,
) (page.LifecycleEventClient, error)

LifecycleEvent wraps cdp.Page.LifecycleEvent with span.

func (*TracedPage) Navigate

func (tracedPage *TracedPage) Navigate(
	ctx context.Context,
	args *page.NavigateArgs,
) (*page.NavigateReply, error)

Navigate wraps cdp.Page.Navigate with span.

func (*TracedPage) PrintToPDF

func (tracedPage *TracedPage) PrintToPDF(
	ctx context.Context,
	args *page.PrintToPDFArgs,
) (*page.PrintToPDFReply, error)

PrintToPDF wraps cdp.Page.PrintToPDF with span.

func (*TracedPage) Reload

func (tracedPage *TracedPage) Reload(ctx context.Context, args *page.ReloadArgs) error

Reload wraps cdp.Page.Reload with span.

func (*TracedPage) SetLifecycleEventsEnabled

func (tracedPage *TracedPage) SetLifecycleEventsEnabled(
	ctx context.Context,
	args *page.SetLifecycleEventsEnabledArgs,
) error

SetLifecycleEventsEnabled wraps cdp.Page.SetLifecycleEventsEnabled with span.

type TypedFactory

type TypedFactory interface {
	pool.PooledObjectFactory
	Type() string
}

TypedFactory wrap pool.PooledObjectFactory and provide Type() method.

type UnexpectedFactoryTypeError

type UnexpectedFactoryTypeError struct {
	// contains filtered or unexported fields
}

UnexpectedFactoryTypeError returns by (*FactoryType).Set when value is unexpected.

func NewUnexpectedFactoryTypeError

func NewUnexpectedFactoryTypeError(value string) *UnexpectedFactoryTypeError

NewUnexpectedFactoryTypeError constructor.

func (*UnexpectedFactoryTypeError) Error

func (err *UnexpectedFactoryTypeError) Error() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL