package cli import ( "context" "github.com/MontFerret/ferret/pkg/drivers" "github.com/MontFerret/ferret/pkg/drivers/cdp" "github.com/MontFerret/ferret/pkg/drivers/http" ) type Options struct { Cdp string Params map[string]interface{} Proxy string UserAgent string ShowTime bool KeepCookies bool } func (opts Options) WithContext(ctx context.Context) (context.Context, context.CancelFunc) { httpDriver := http.NewDriver( http.WithProxy(opts.Proxy), http.WithUserAgent(opts.UserAgent), ) ctx = drivers.WithContext( ctx, httpDriver, drivers.AsDefault(), ) cdpOpts := []cdp.Option{ cdp.WithAddress(opts.Cdp), cdp.WithProxy(opts.Proxy), cdp.WithUserAgent(opts.UserAgent), } if opts.KeepCookies { cdpOpts = append(cdpOpts, cdp.WithKeepCookies()) } cdpDriver := cdp.NewDriver(cdpOpts...) ctx = drivers.WithContext( ctx, cdpDriver, ) return context.WithCancel(ctx) }