class Applitools::Selenium::VGResource
Attributes
content[RW]
handle_discovered_resources_block[RW]
url[RW]
Public Class Methods
new(url, content_type, content, options = {})
click to toggle source
# File lib/applitools/selenium/visual_grid/vg_resource.rb, line 33 def initialize(url, content_type, content, options = {}) self.handle_discovered_resources_block = options[:on_resources_fetched] if options[:on_resources_fetched].is_a? Proc self.url = URI(url) self.content_type = content_type self.content = content self.hash = Digest::SHA256.hexdigest(content) self.hashFormat = 'sha256' lookup_for_resources end
parse_blob_from_script(blob, options = {})
click to toggle source
# File lib/applitools/selenium/visual_grid/vg_resource.rb, line 17 def parse_blob_from_script(blob, options = {}) return new( blob['url'], "application/X-error-response-#{blob['errorStatusCode']}", blob['value'] || '' ).tap {|r| r.error_status_code = blob['errorStatusCode']} if blob['errorStatusCode'] content = Base64.decode64(blob['value']) new(blob['url'], blob['type'], content, options) end
parse_response(url, response, options = {})
click to toggle source
# File lib/applitools/selenium/visual_grid/vg_resource.rb, line 27 def parse_response(url, response, options = {}) return new(url, 'application/empty-response', '') unless response.status == 200 new(url, response.headers['Content-Type'], response.body, options) end
Public Instance Methods
lookup_for_resources()
click to toggle source
# File lib/applitools/selenium/visual_grid/vg_resource.rb, line 48 def lookup_for_resources lookup_for_css_resources lookup_for_svg_resources end
on_resources_fetched(block)
click to toggle source
# File lib/applitools/selenium/visual_grid/vg_resource.rb, line 44 def on_resources_fetched(block) self.handle_discovered_resources_block = block end
stringify()
click to toggle source
# File lib/applitools/selenium/visual_grid/vg_resource.rb, line 69 def stringify url.to_s + content_type.to_s + hash end
Private Instance Methods
lookup_for_css_resources()
click to toggle source
# File lib/applitools/selenium/visual_grid/vg_resource.rb, line 53 def lookup_for_css_resources return unless %r{^text/css}i =~ content_type && handle_discovered_resources_block parser = Applitools::Selenium::CssParser::FindEmbeddedResources.new(content) handle_discovered_resources_block.call(parser.imported_css + parser.fonts + parser.images, url) end
lookup_for_svg_resources()
click to toggle source
# File lib/applitools/selenium/visual_grid/vg_resource.rb, line 59 def lookup_for_svg_resources return unless %r{^image/svg\+xml} =~ content_type && handle_discovered_resources_block attrs = Nokogiri::XML(content) .xpath("//@*[namespace-uri(.) = 'http://www.w3.org/1999/xlink'] | //@href") .select { |a| a.name == 'href' } .map(&:value) .select { |a| /^(?!#).*/.match(a) } handle_discovered_resources_block.call(attrs, url) end