browshot 1.3.0 → 1.4.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/Gemfile +6 -2
- data/README.rdoc +1 -1
- data/VERSION +1 -1
- data/lib/browshot.rb +62 -3
- data/test/test_browshot.rb +13 -1
- metadata +37 -15
data/Gemfile
CHANGED
@@ -1,11 +1,15 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
# Dependencies required to use browshot
|
3
3
|
|
4
|
-
|
5
|
-
gem "
|
4
|
+
group :runtime do
|
5
|
+
gem "json", ">= 0"
|
6
|
+
gem "url", ">= 0"
|
7
|
+
end
|
6
8
|
|
7
9
|
# Dependencies to develop browshot.
|
8
10
|
group :development do
|
11
|
+
gem "json", ">= 0"
|
12
|
+
gem "url", ">= 0"
|
9
13
|
gem "shoulda", ">= 0"
|
10
14
|
gem "bundler", "~> 1.0.0"
|
11
15
|
gem "jeweler", "~> 1.6.4"
|
data/README.rdoc
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.4.0
|
data/lib/browshot.rb
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
# and this library.
|
6
6
|
#
|
7
7
|
# Author:: Julien Sobrier (mailto:jsobrier@browshot.com)
|
8
|
-
# Copyright:: Copyright (c)
|
8
|
+
# Copyright:: Copyright (c) 2012 Browshot
|
9
9
|
# License:: Distributes under the same terms as Ruby
|
10
10
|
|
11
11
|
require 'url'
|
@@ -34,8 +34,42 @@ class Browshot
|
|
34
34
|
|
35
35
|
# Return the API version handled by the library. Note that this library can usually handle new arguments in requests without requiring an update.
|
36
36
|
def api_version()
|
37
|
-
return "1.
|
38
|
-
end
|
37
|
+
return "1.4"
|
38
|
+
end
|
39
|
+
|
40
|
+
# Retrieve a screenshot with one call. See http://browshot.com/api/documentation#simple for the full list of possible arguments.
|
41
|
+
#
|
42
|
+
# Return {: code => 200, :png => <content>} in case of success
|
43
|
+
def simple(parameters={})
|
44
|
+
begin
|
45
|
+
url = make_url('simple', parameters)
|
46
|
+
response = fetch(url.to_s)
|
47
|
+
case response
|
48
|
+
when Net::HTTPSuccess then
|
49
|
+
return {:code => response.code, :png => response.response.body}
|
50
|
+
else
|
51
|
+
return {:code => response.code, :png => ''}
|
52
|
+
end
|
53
|
+
rescue Exception => e
|
54
|
+
puts "{e.message}" if (@debug)
|
55
|
+
raise e
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# Save a screenshot to a file with one call, and save it to a file. See http://browshot.com/api/documentation#simple for the full list of possible arguments.
|
60
|
+
#
|
61
|
+
# Return {: code => 200, :file => <file_name>} in case of success
|
62
|
+
#
|
63
|
+
# +file+: Local file name to write to.
|
64
|
+
def simple_file(file='', parameters={})
|
65
|
+
data = self.simple(parameters)
|
66
|
+
if (data[:png].length > 0)
|
67
|
+
File.open(file, 'w') {|f| f.write(data[:png]) }
|
68
|
+
return {:code => data[:code], :file => file}
|
69
|
+
else
|
70
|
+
return {:code => data[:code], :file => ''}
|
71
|
+
end
|
72
|
+
end
|
39
73
|
|
40
74
|
# Return the list of instances. See http://browshot.com/api/documentation#instance_list for the response format.
|
41
75
|
def instance_list()
|
@@ -176,4 +210,29 @@ class Browshot
|
|
176
210
|
raise e
|
177
211
|
end
|
178
212
|
end
|
213
|
+
|
214
|
+
def fetch(url, limit=32)
|
215
|
+
raise ArgumentError, 'HTTP redirect too deep' if (limit == 0)
|
216
|
+
|
217
|
+
uri = URI.parse(url)
|
218
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
219
|
+
http.open_timeout = 240
|
220
|
+
http.read_timeout = 240
|
221
|
+
|
222
|
+
request = Net::HTTP::Get.new(uri.request_uri)
|
223
|
+
if (uri.scheme == 'https')
|
224
|
+
http.use_ssl = true
|
225
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
226
|
+
end
|
227
|
+
response = http.request(request)
|
228
|
+
|
229
|
+
case response
|
230
|
+
when Net::HTTPRedirection then
|
231
|
+
path = response['location']
|
232
|
+
url = URL.new( URI.join(@base, path).to_s )
|
233
|
+
return fetch(url.to_s, limit - 1)
|
234
|
+
else
|
235
|
+
return response
|
236
|
+
end
|
237
|
+
end
|
179
238
|
end
|
data/test/test_browshot.rb
CHANGED
@@ -14,7 +14,19 @@ class TestBrowshot < Test::Unit::TestCase
|
|
14
14
|
end
|
15
15
|
|
16
16
|
should "get the API version" do
|
17
|
-
assert_equal '1.
|
17
|
+
assert_equal '1.4', @browshot.api_version()
|
18
|
+
end
|
19
|
+
|
20
|
+
should "get a screenshot with the simple method" do
|
21
|
+
data = @browshot.simple({'url' => 'http://mobilito.net/', 'cache' => 60 * 60 * 24 * 365})
|
22
|
+
assert_equal 200, data[:code].to_i, "Screenshot should be succesful"
|
23
|
+
assert_equal true, data[:png].length > 0, "Screenshot should be sent"
|
24
|
+
end
|
25
|
+
|
26
|
+
should "get an error with the simple method" do
|
27
|
+
data = @browshot.simple({'url' => 'http://', 'cache' => 60 * 60 * 24 * 365})
|
28
|
+
assert_equal 400, data[:code].to_i, "Screenshot should have failed"
|
29
|
+
assert_equal 0, data[:png].length, "Screenshot should not be sent"
|
18
30
|
end
|
19
31
|
|
20
32
|
should "get the list of instances available" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: browshot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-01-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
16
|
-
requirement: &
|
16
|
+
requirement: &76488040 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *76488040
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: url
|
27
|
-
requirement: &
|
27
|
+
requirement: &76487040 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,32 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *76487040
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: json
|
38
|
+
requirement: &76486260 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *76486260
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: url
|
49
|
+
requirement: &76485600 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *76485600
|
36
58
|
- !ruby/object:Gem::Dependency
|
37
59
|
name: shoulda
|
38
|
-
requirement: &
|
60
|
+
requirement: &76484880 !ruby/object:Gem::Requirement
|
39
61
|
none: false
|
40
62
|
requirements:
|
41
63
|
- - ! '>='
|
@@ -43,10 +65,10 @@ dependencies:
|
|
43
65
|
version: '0'
|
44
66
|
type: :development
|
45
67
|
prerelease: false
|
46
|
-
version_requirements: *
|
68
|
+
version_requirements: *76484880
|
47
69
|
- !ruby/object:Gem::Dependency
|
48
70
|
name: bundler
|
49
|
-
requirement: &
|
71
|
+
requirement: &76520160 !ruby/object:Gem::Requirement
|
50
72
|
none: false
|
51
73
|
requirements:
|
52
74
|
- - ~>
|
@@ -54,10 +76,10 @@ dependencies:
|
|
54
76
|
version: 1.0.0
|
55
77
|
type: :development
|
56
78
|
prerelease: false
|
57
|
-
version_requirements: *
|
79
|
+
version_requirements: *76520160
|
58
80
|
- !ruby/object:Gem::Dependency
|
59
81
|
name: jeweler
|
60
|
-
requirement: &
|
82
|
+
requirement: &76519480 !ruby/object:Gem::Requirement
|
61
83
|
none: false
|
62
84
|
requirements:
|
63
85
|
- - ~>
|
@@ -65,10 +87,10 @@ dependencies:
|
|
65
87
|
version: 1.6.4
|
66
88
|
type: :development
|
67
89
|
prerelease: false
|
68
|
-
version_requirements: *
|
90
|
+
version_requirements: *76519480
|
69
91
|
- !ruby/object:Gem::Dependency
|
70
92
|
name: rcov
|
71
|
-
requirement: &
|
93
|
+
requirement: &76518780 !ruby/object:Gem::Requirement
|
72
94
|
none: false
|
73
95
|
requirements:
|
74
96
|
- - ! '>='
|
@@ -76,7 +98,7 @@ dependencies:
|
|
76
98
|
version: '0'
|
77
99
|
type: :development
|
78
100
|
prerelease: false
|
79
|
-
version_requirements: *
|
101
|
+
version_requirements: *76518780
|
80
102
|
description: ! 'Browshot (http://www.browshot.com/) is a web service to easily make
|
81
103
|
screenshots of web pages in any screen size, as any device: iPhone©, iPad©, Android©,
|
82
104
|
Nook©, PC, etc. Browshot has full Flash, JavaScript, CSS, & HTML5 support. The latest
|
@@ -119,7 +141,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
119
141
|
version: '0'
|
120
142
|
segments:
|
121
143
|
- 0
|
122
|
-
hash: -
|
144
|
+
hash: -2499451636168677631
|
123
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
146
|
none: false
|
125
147
|
requirements:
|