Class: BrandLogo::Strategies::Scraping::IconFinder
- Inherits:
-
Object
- Object
- BrandLogo::Strategies::Scraping::IconFinder
- Extended by:
- T::Sig
- Defined in:
- lib/brand_logo/strategies/scraping/icon_finder.rb
Overview
Finds all favicon candidates in a parsed HTML document. Returns unfiltered icons — validation/selection is the strategy’s responsibility.
Constant Summary collapse
- FAVICON_SELECTORS =
T.let([ 'link[rel~="icon"]', 'link[rel~="shortcut"]', 'link[rel~="apple-touch-icon"]', 'link[rel~="mask-icon"]', 'link[type="image/x-icon"]', 'link[type="image/vnd.microsoft.icon"]', 'link[type="image/png"]', 'link[type="image/svg+xml"]' ].freeze, T::Array[String])
Instance Method Summary collapse
- #find ⇒ Object
-
#initialize(doc:, base_url:, dimensions_extractor:, default_favicon_checker:) ⇒ IconFinder
constructor
A new instance of IconFinder.
Constructor Details
#initialize(doc:, base_url:, dimensions_extractor:, default_favicon_checker:) ⇒ IconFinder
Returns a new instance of IconFinder.
33 34 35 36 37 38 |
# File 'lib/brand_logo/strategies/scraping/icon_finder.rb', line 33 def initialize(doc:, base_url:, dimensions_extractor:, default_favicon_checker:) @doc = T.let(doc, ParsedDocument) @url_normalizer = T.let(UrlNormalizer.new(base_url), UrlNormalizer) @dimensions_extractor = T.let(dimensions_extractor, DimensionsExtractor) @default_favicon_checker = T.let(default_favicon_checker, DefaultFaviconChecker) end |
Instance Method Details
#find ⇒ Object
42 43 44 45 46 47 48 49 |
# File 'lib/brand_logo/strategies/scraping/icon_finder.rb', line 42 def find icons = find_icons_from_selectors return icons unless icons.empty? BrandLogo::Logging.logger.debug('No icons found in HTML, checking default /favicon.ico') default_icon = @default_favicon_checker.check(@url_normalizer.default_favicon_url) default_icon ? [default_icon] : [] end |