browshot 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,11 +1,15 @@
1
1
  source "http://rubygems.org"
2
2
  # Dependencies required to use browshot
3
3
 
4
- gem "json", ">= 0"
5
- gem "url", ">= 0"
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
@@ -33,5 +33,5 @@ Or
33
33
 
34
34
  == Copyright
35
35
 
36
- Copyright (c) 2011 Julien Sobrier. See LICENSE.txt for
36
+ Copyright (c) 2012 Julien Sobrier. See LICENSE.txt for
37
37
  further details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.3.0
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) 2011 Browshot
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.3"
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
@@ -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.3', @browshot.api_version()
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.3.0
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: 2011-12-11 00:00:00.000000000 Z
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: &245654200 !ruby/object:Gem::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: *245654200
24
+ version_requirements: *76488040
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: url
27
- requirement: &245652940 !ruby/object:Gem::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: *245652940
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: &245448520 !ruby/object:Gem::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: *245448520
68
+ version_requirements: *76484880
47
69
  - !ruby/object:Gem::Dependency
48
70
  name: bundler
49
- requirement: &245447720 !ruby/object:Gem::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: *245447720
79
+ version_requirements: *76520160
58
80
  - !ruby/object:Gem::Dependency
59
81
  name: jeweler
60
- requirement: &245447060 !ruby/object:Gem::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: *245447060
90
+ version_requirements: *76519480
69
91
  - !ruby/object:Gem::Dependency
70
92
  name: rcov
71
- requirement: &245446360 !ruby/object:Gem::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: *245446360
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: -318905846475433273
144
+ hash: -2499451636168677631
123
145
  required_rubygems_version: !ruby/object:Gem::Requirement
124
146
  none: false
125
147
  requirements: