Class: Powersnap

Inherits:
Object
  • Object
show all
Defined in:
lib/powersnap.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(urls, prefix: nil) ⇒ Powersnap

Returns a new instance of Powersnap.



14
15
16
17
18
# File 'lib/powersnap.rb', line 14

def initialize(urls, prefix: nil)
  prefix ||= self.class.powersnap_config["prefix"]
  @urls = urls.map { |url| URI.encode(url) }
  @prefix = prefix
end

Instance Attribute Details

#prefixObject

Returns the value of attribute prefix.



2
3
4
# File 'lib/powersnap.rb', line 2

def prefix
  @prefix
end

#urlsObject

Returns the value of attribute urls.



2
3
4
# File 'lib/powersnap.rb', line 2

def urls
  @urls
end

Class Method Details

.default_powersnap_configObject



9
10
11
# File 'lib/powersnap.rb', line 9

def default_powersnap_config
  { "prefix" => nil }
end

.powersnap_configObject



5
6
7
# File 'lib/powersnap.rb', line 5

def powersnap_config
  @system_prefix ||= (File.exist?("powersnap.yml") ? YAML.load_file("powersnap.yml") : default_powersnap_config)
end

Instance Method Details

#generate(dir: ".", width: 768, height: 1024, pattern: "image-{index}.png", zoom: 1.0, page: false, quality: 100, css: nil) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/powersnap.rb', line 20

def generate(dir: ".", width: 768, height: 1024, pattern: "image-{index}.png", zoom: 1.0, page: false, quality: 100, css: nil)
  extension = File.extname(pattern)
  if extension == ".jpg"
    format = "jpeg"
  elsif extension == ".png"
    format = "png"
  else
    raise "Invalid file extension: #{extension}"
  end
  cmd = "#{@prefix} powersnap -j -d \"#{dir}\" -t \"#{format}\" -q #{quality} -z #{zoom} #{page ? '--page' : ''} -w #{width.to_i} -h #{height.to_i} #{(css and "-c #{css}")} -f \"#{pattern}\" #{@urls.join(' ')}"
  json_response = `#{cmd}`
  JSON.parse(json_response) rescue { "status" => "error" }
end