Class: Applitools::Selenium::VGResource

Inherits:
Object
  • Object
show all
Includes:
Jsonable
Defined in:
lib/applitools/selenium/visual_grid/vg_resource.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(url, content_type, content, options = {}) ⇒ VGResource

Returns a new instance of VGResource.



24
25
26
27
28
29
30
31
32
# File 'lib/applitools/selenium/visual_grid/vg_resource.rb', line 24

def initialize(url, content_type, content, options = {})
  self.handle_css_block = options[:on_css_fetched] if options[:on_css_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

Instance Attribute Details

#contentObject

Returns the value of attribute content.



8
9
10
# File 'lib/applitools/selenium/visual_grid/vg_resource.rb', line 8

def content
  @content
end

#handle_css_blockObject

Returns the value of attribute handle_css_block.



8
9
10
# File 'lib/applitools/selenium/visual_grid/vg_resource.rb', line 8

def handle_css_block
  @handle_css_block
end

#urlObject

Returns the value of attribute url.



8
9
10
# File 'lib/applitools/selenium/visual_grid/vg_resource.rb', line 8

def url
  @url
end

Class Method Details

.parse_blob_from_script(blob, options = {}) ⇒ Object



13
14
15
16
# File 'lib/applitools/selenium/visual_grid/vg_resource.rb', line 13

def parse_blob_from_script(blob, options = {})
  content = Base64.decode64(blob['value'])
  new(blob['url'], blob['type'], content, options)
end

.parse_response(url, response, options = {}) ⇒ Object



18
19
20
21
# File 'lib/applitools/selenium/visual_grid/vg_resource.rb', line 18

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

Instance Method Details

#lookup_for_resourcesObject



38
39
40
41
42
43
# File 'lib/applitools/selenium/visual_grid/vg_resource.rb', line 38

def lookup_for_resources
  if %r{^text/css}i =~ content_type && handle_css_block
    parser = Applitools::Selenium::CssParser::FindEmbeddedResources.new(content)
    handle_css_block.call(parser.imported_css + parser.fonts + parser.images, url)
  end
end

#on_css_fetched(block) ⇒ Object



34
35
36
# File 'lib/applitools/selenium/visual_grid/vg_resource.rb', line 34

def on_css_fetched(block)
  self.handle_css_block = block
end

#stringifyObject



45
46
47
# File 'lib/applitools/selenium/visual_grid/vg_resource.rb', line 45

def stringify
  url.to_s + content_type.to_s + hash
end