url2png 0.0.7 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.markdown +53 -3
- data/VERSION +1 -1
- data/lib/url2png/config.rb +1 -1
- data/lib/url2png/dimensions.rb +12 -5
- data/lib/url2png/helpers/common.rb +34 -7
- data/spec/helpers/common_rspec.rb +28 -2
- data/url2png.gemspec +1 -1
- metadata +12 -12
data/README.markdown
CHANGED
@@ -26,9 +26,10 @@ This is done by setting the mode:
|
|
26
26
|
Url2png::Config.mode = :placehold if Rails.env.development?
|
27
27
|
|
28
28
|
Options are:
|
29
|
-
|
30
|
-
|
31
|
-
|
29
|
+
|
30
|
+
* :production (default; will use the url2png api to generate images)
|
31
|
+
* :placehold (will generate images at http://placehold.it)
|
32
|
+
* :dummy (will give a grey base64 data image)
|
32
33
|
|
33
34
|
In Rails you probably want to do configuration in an initializer.
|
34
35
|
|
@@ -50,6 +51,55 @@ To only get the image url:
|
|
50
51
|
|
51
52
|
site_image_url url, :size => '300x200'
|
52
53
|
|
54
|
+
Options are:
|
55
|
+
|
56
|
+
**:size**<br>
|
57
|
+
This is a proportion bounding box.<br>
|
58
|
+
Thumbnails will be resized to fit within this box.<br>
|
59
|
+
default: 'ORIGINAL'<br>
|
60
|
+
examples:
|
61
|
+
|
62
|
+
site_image_tag url, :size => '500x500'
|
63
|
+
|
64
|
+
site_image_tag url, :size => 'ORIGINAL'
|
65
|
+
|
66
|
+
**:thumbnail** (alias for :size)
|
67
|
+
|
68
|
+
**:browser_size**<br>
|
69
|
+
Set the initial browser screen size.<br>
|
70
|
+
default: '1024x768'<br>
|
71
|
+
min: '200x200'<br>
|
72
|
+
max: '4000x4000'<br>
|
73
|
+
example:
|
74
|
+
|
75
|
+
site_image_tag url, :size => '300x200', :browser_size => '1024x2500'
|
76
|
+
|
77
|
+
**:delay**<br>
|
78
|
+
Extra delay (in seconds) forced between page load and screenshot.<br>
|
79
|
+
default: 1<br>
|
80
|
+
min: 1<br>
|
81
|
+
max: 5<br>
|
82
|
+
example:
|
83
|
+
|
84
|
+
site_image_tag url, :size => '300x200', :delay => 2
|
85
|
+
|
86
|
+
**:fullscreen**<br>
|
87
|
+
When true, Will attempt to capture entire document canvas.<br>
|
88
|
+
Will never return screenshot smaller than "Initial Screen Size".<br>
|
89
|
+
default: false<br>
|
90
|
+
example:
|
91
|
+
|
92
|
+
site_image_tag url, :size => '300x200', :fullscreen => true
|
93
|
+
|
94
|
+
|
95
|
+
Original API docs: https://url2png.com/doc/
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
### API Version
|
100
|
+
From version 0.1.0 and up this gem is using version 4 of the url2png API.<br>
|
101
|
+
Version 0.0.7 is the last one using version 3 of the API.
|
102
|
+
|
53
103
|
|
54
104
|
## Important
|
55
105
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/lib/url2png/config.rb
CHANGED
data/lib/url2png/dimensions.rb
CHANGED
@@ -2,12 +2,19 @@ module Url2png
|
|
2
2
|
module Dimensions
|
3
3
|
|
4
4
|
def self.parse options
|
5
|
-
|
6
|
-
|
5
|
+
# convert tumbnail to size to ensure compatibility with older gem versions
|
6
|
+
options[:size] ||= options[:thumbnail]
|
7
|
+
|
8
|
+
# distill image size
|
9
|
+
size = (options[:size] || Url2png::Config.default_size).split('x')
|
10
|
+
width = options[:width] || size[0]
|
11
|
+
height = options[:height] || size[1]
|
12
|
+
|
13
|
+
# return dimensions hash
|
7
14
|
{
|
8
|
-
:size =>
|
9
|
-
:width =>
|
10
|
-
:height =>
|
15
|
+
:size => "#{ width }x#{ height }",
|
16
|
+
:width => width,
|
17
|
+
:height => height
|
11
18
|
}
|
12
19
|
end
|
13
20
|
|
@@ -1,24 +1,36 @@
|
|
1
1
|
module Url2png
|
2
2
|
module Helpers
|
3
3
|
module Common
|
4
|
-
|
4
|
+
|
5
|
+
# complete image tag
|
5
6
|
def site_image_tag url, options = {}
|
7
|
+
# parse size
|
6
8
|
dim = Url2png::Dimensions.parse(options)
|
7
|
-
|
9
|
+
|
10
|
+
# ensure image alt
|
11
|
+
alt = options.key?(:alt) ? options.delete(:alt) : url
|
12
|
+
|
13
|
+
# filter options
|
14
|
+
url2png_options = {}
|
15
|
+
[:size, :thumbnail, :browser_size, :delay, :fullscreen].each do |key|
|
16
|
+
url2png_options[key] = options.delete(key) if options.key?(key)
|
17
|
+
end
|
18
|
+
|
8
19
|
# build image tag
|
9
20
|
img = '<img'
|
10
|
-
img << " src='#{ site_image_url(url,
|
11
|
-
img << " alt='#{
|
21
|
+
img << " src='#{ site_image_url(url, url2png_options) }'"
|
22
|
+
img << " alt='#{ alt }'"
|
12
23
|
img << " width='#{ dim[:width] }'"
|
13
24
|
img << " height='#{ dim[:height] }'"
|
14
25
|
options.each_pair do |k, v|
|
15
26
|
img << " #{ k }='#{ v }'" unless v.nil? || v == ''
|
16
27
|
end
|
17
28
|
img << ' />'
|
18
|
-
img.html_safe
|
19
29
|
end
|
20
30
|
|
31
|
+
# only the url for the image
|
21
32
|
def site_image_url url, options = {}
|
33
|
+
# parse size
|
22
34
|
dim = Url2png::Dimensions.parse(options)
|
23
35
|
|
24
36
|
case Url2png::Config.mode
|
@@ -60,12 +72,27 @@ module Url2png
|
|
60
72
|
# generate token
|
61
73
|
token = Digest::MD5.hexdigest("#{ Url2png::Config.shared_secret }+#{ safe_url }")
|
62
74
|
|
75
|
+
# build options portion of URL
|
76
|
+
url_options = []
|
77
|
+
url_options << "t#{ dim[:size] }" if dim[:size]
|
78
|
+
url_options << "s#{ options[:browser_size] }" if options[:browser_size]
|
79
|
+
url_options << "d#{ options[:delay] }" if options[:delay]
|
80
|
+
url_options << "FULL" if options[:fullscreen]
|
81
|
+
url_options_string = url_options.join('-')
|
82
|
+
|
63
83
|
# build image url
|
64
|
-
File.join(
|
84
|
+
File.join(
|
85
|
+
Url2png::Config.api_url(options[:protocol]),
|
86
|
+
Url2png::Config.api_version,
|
87
|
+
Url2png::Config.public_key,
|
88
|
+
token,
|
89
|
+
url_options_string,
|
90
|
+
safe_url
|
91
|
+
)
|
65
92
|
end
|
66
93
|
|
67
94
|
end
|
68
|
-
|
95
|
+
|
69
96
|
end
|
70
97
|
end
|
71
98
|
end
|
@@ -1,12 +1,38 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'url2png/helpers/common'
|
3
3
|
|
4
4
|
describe Url2png do
|
5
5
|
include Url2png::Helpers::Common
|
6
|
+
before(:all) do
|
7
|
+
Url2png::Config.public_key = "P4DBEC0200EE98"
|
8
|
+
Url2png::Config.shared_secret = "S169B0E051EAC6794B3EC9F385866187R"
|
9
|
+
end
|
6
10
|
|
7
11
|
describe "site_image_tag" do
|
8
12
|
it "should return the url of the http://pasparout.com image" do
|
9
13
|
site_image_tag('http://pasparout.com').should_not be_nil
|
10
14
|
end
|
11
15
|
end
|
16
|
+
|
17
|
+
describe "site_image_url" do
|
18
|
+
it "should encode the thumbnail size when provided" do
|
19
|
+
site_image_url('http://www.nytimes.com/', :thumbnail => '200x300').should =~ %r{t200x300}
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should encode the initial browser size when provided" do
|
23
|
+
site_image_url('http://www.nytimes.com/', :browser_size => '200x300').should =~ %r{s200x300}
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should encode the delay when provided" do
|
27
|
+
site_image_url('http://www.nytimes.com/', :delay => 3).should =~ %r{d3}
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should encode the fullscreen capture flag when provided" do
|
31
|
+
site_image_url('http://www.nytimes.com/', :fullscreen => true).should =~ %r{FULL}
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should concatenate options by using hyphens" do
|
35
|
+
site_image_url('http://www.nytimes.com/', :delay => 3, :fullscreen => true).should =~ %r{d3-FULL}
|
36
|
+
end
|
37
|
+
end
|
12
38
|
end
|
data/url2png.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: url2png
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -15,7 +15,7 @@ date: 2011-12-01 00:00:00.000000000Z
|
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rspec
|
18
|
-
requirement: &
|
18
|
+
requirement: &2156933760 !ruby/object:Gem::Requirement
|
19
19
|
none: false
|
20
20
|
requirements:
|
21
21
|
- - ~>
|
@@ -23,10 +23,10 @@ dependencies:
|
|
23
23
|
version: 2.6.0
|
24
24
|
type: :development
|
25
25
|
prerelease: false
|
26
|
-
version_requirements: *
|
26
|
+
version_requirements: *2156933760
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
|
-
requirement: &
|
29
|
+
requirement: &2156933160 !ruby/object:Gem::Requirement
|
30
30
|
none: false
|
31
31
|
requirements:
|
32
32
|
- - ~>
|
@@ -34,10 +34,10 @@ dependencies:
|
|
34
34
|
version: 1.0.0
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
|
-
version_requirements: *
|
37
|
+
version_requirements: *2156933160
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: jeweler
|
40
|
-
requirement: &
|
40
|
+
requirement: &2156932560 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
43
|
- - ~>
|
@@ -45,10 +45,10 @@ dependencies:
|
|
45
45
|
version: 1.5.2
|
46
46
|
type: :development
|
47
47
|
prerelease: false
|
48
|
-
version_requirements: *
|
48
|
+
version_requirements: *2156932560
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: rcov
|
51
|
-
requirement: &
|
51
|
+
requirement: &2156931920 !ruby/object:Gem::Requirement
|
52
52
|
none: false
|
53
53
|
requirements:
|
54
54
|
- - ! '>='
|
@@ -56,10 +56,10 @@ dependencies:
|
|
56
56
|
version: '0'
|
57
57
|
type: :development
|
58
58
|
prerelease: false
|
59
|
-
version_requirements: *
|
59
|
+
version_requirements: *2156931920
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: rspec
|
62
|
-
requirement: &
|
62
|
+
requirement: &2156931280 !ruby/object:Gem::Requirement
|
63
63
|
none: false
|
64
64
|
requirements:
|
65
65
|
- - ! '>'
|
@@ -67,7 +67,7 @@ dependencies:
|
|
67
67
|
version: 2.6.0
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
|
-
version_requirements: *
|
70
|
+
version_requirements: *2156931280
|
71
71
|
description: Generate screenshots from websites almost instantly at any preferred
|
72
72
|
size using ruby and the url2png.com API
|
73
73
|
email: wout@impinc.co.uk
|
@@ -109,7 +109,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
109
109
|
version: '0'
|
110
110
|
segments:
|
111
111
|
- 0
|
112
|
-
hash: -
|
112
|
+
hash: -928741917321471624
|
113
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
114
|
none: false
|
115
115
|
requirements:
|