Skip to content

Network#intercept silently discards unknown resource_types #313

@ttilberg

Description

@ttilberg

def intercept(pattern: "*", resource_type: nil)

If you try to create an intercept filter with an unknown resource type, the option is silently discarded:

browser.network.intercept resource_type: :Hotdogs
# => Okie dokie

Instead, it should raise an exception either by letting the CDP exception bubble up:

Unknown resource type in fetch filter: 'Hotdogs' (Ferrum::BrowserError)
	from /Users/ttilberg/.asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/ferrum-0.12/lib/ferrum/browser/client.rb:49:in `command'
	from /Users/ttilberg/.asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/ferrum-0.12/lib/ferrum/page.rb:177:in `command'
	from /Users/ttilberg/.asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/ferrum-0.12/lib/ferrum/network.rb:98:in `intercept'
	from browse.rb:4:in `<main>'

Or, raise an exception that helps the user by tailoring the language to the Ferrum API:

/Users/ttilberg/.asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/ferrum-0.12/lib/ferrum/network.rb:96:in `intercept': resource_type must be one of ["Document", "Stylesheet", "Image", "Media", "Font", "Script", "TextTrack", "XHR", "Fetch", "EventSource", "WebSocket", "Manifest", "SignedExchange", "Ping", "CSPViolationReport", "Other"] (RuntimeError)
	from browse.rb:4:in `<main>'

It looks like RESOURCE_TYPES is only used to guard this value, so perhaps by letting it bubble up you wouldn't have to maintain this list anyway.

This came up after trying to send WebSocket as a value, and finding that it wasn't accepted by CDP anyway. So maybe there's a higher-level thing that needs to change anyway.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions