browshot 1.7.0 → 1.8.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.
Files changed (4) hide show
  1. data/VERSION +1 -1
  2. data/lib/browshot.rb +32 -28
  3. data/test/test_browshot.rb +45 -5
  4. metadata +19 -19
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.7.0
1
+ 1.8.0
data/lib/browshot.rb CHANGED
@@ -34,7 +34,7 @@ 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.7"
37
+ return "1.8"
38
38
  end
39
39
 
40
40
  # Retrieve a screenshot with one call. See http://browshot.com/api/documentation#simple for the full list of possible arguments.
@@ -126,45 +126,49 @@ class Browshot
126
126
  return return_reply('screenshot/list', parameters)
127
127
  end
128
128
 
129
- # Retrieve the screenshot, or a thumbnail. See http://browshot.com/api/documentation#thumbnails for the response format.
129
+ # Retrieve the screenshot, or a thumbnail. See http://browshot.com/api/documentation#screenshot_thumbnails for the response format.
130
130
  #
131
131
  # Return an empty string if the image could not be retrieved.
132
132
  # +id+:: screenshot ID
133
- def screenshot_thumbnail(url='', parameters={})
134
- begin
135
- url = URL.new(url)
136
-
137
- parameters.each_pair do |key, value|
138
- url.params[key] = value
139
- end
140
-
141
- puts "#{url}" if (@debug)
142
-
133
+ def screenshot_thumbnail(id=0, parameters={})
134
+ parameters[:id] = id
143
135
 
144
- response = url.get
136
+ begin
137
+ url = make_url('screenshot/thumbnail', parameters)
138
+ response = fetch(url.to_s)
139
+ case response
140
+ when Net::HTTPSuccess then
141
+ return response.response.body
142
+ else
143
+ return ''
144
+ end
145
+ rescue Exception => e
146
+ puts "{e.message}" if (@debug)
147
+ raise e
148
+ end
149
+ end
145
150
 
146
- if (response.success?)
147
- return response.response.body
148
- else
149
- puts "Error from #{url}: #{response.code}" if (@debug)
150
- return ''
151
- end
152
- rescue Exception => e
153
- puts "{e.message}" if (@debug)
154
- raise e
155
- end
151
+ # Hot a screenshot or thumbnail. See http://browshot.com/api/documentation#screenshot_host for the response format.
152
+ #
153
+ # +id+:: screenshot ID
154
+ # +hosting+:: hosting option: s3, cdn or browshot
155
+ def screenshot_host(id=0, hosting='browshot', parameters={})
156
+ parameters[:id] = id
157
+ parameters[:hosting] = hosting
158
+ return return_reply('screenshot/host', parameters)
156
159
  end
157
160
 
158
- # Retrieve the screenshot, or a thumbnail, and save it to a file. See http://browshot.com/api/documentation#thumbnails for the response format.
161
+
162
+ # Retrieve the screenshot, or a thumbnail, and save it to a file. See http://browshot.com/api/documentation#screenshot_thumbnails for the response format.
159
163
  #
160
164
  # See http://browshot.com/api/documentation#thumbnails for the full list of possible arguments.
161
165
  #
162
- # +url+:: URL of the screenshot (screenshot_url value retrieved from screenshot_create() or screenshot_info()). You will get the full image if no other argument is specified.
166
+ # +id+:: screenshot ID
163
167
  # +file+:: Local file name to write to.
164
- def screenshot_thumbnail_file(url='', file='', parameters={})
165
- content = screenshot_thumbnail(url, parameters);
168
+ def screenshot_thumbnail_file(id=0, file='', parameters={})
169
+ content = screenshot_thumbnail(id, parameters);
166
170
 
167
- if ($content != '')
171
+ if (content != '')
168
172
  File.open(file, 'w') {|f| f.write(content) }
169
173
  return file
170
174
  else
@@ -14,7 +14,7 @@ class TestBrowshot < Test::Unit::TestCase
14
14
  end
15
15
 
16
16
  should "get the API version" do
17
- assert_equal '1.7', @browshot.api_version()
17
+ assert_equal '1.8', @browshot.api_version()
18
18
  end
19
19
 
20
20
  should "get a screenshot with the simple method" do
@@ -85,7 +85,7 @@ class TestBrowshot < Test::Unit::TestCase
85
85
  assert_equal false, instance['status'].nil?, "Instance should not be found"
86
86
  end
87
87
 
88
- should "send an errror when creating a instanc with ivalid arguments" do
88
+ should "send an errror when creating a instance with ivalid arguments" do
89
89
  instance = @browshot.instance_create({'width' => 3000})
90
90
  assert_equal false, instance['error'].nil?, "Instance width should be too large"
91
91
 
@@ -100,7 +100,7 @@ class TestBrowshot < Test::Unit::TestCase
100
100
  # Option disabled for most accounts
101
101
  instance = @browshot.instance_create()
102
102
 
103
- # assert_equal false, instance['error'].nil?, "Instance cannot be created for this account"
103
+ assert_equal false, instance['error'].nil?, "Instance cannot be created for this account"
104
104
  # assert_equal false, instance['id'].nil?, "Instance ID should be present"
105
105
  # assert_equal false, instance['width'].nil?, "Instance screen width should be present"
106
106
  # assert_equal false, instance['height'].nil?, "Instance screen height should be present"
@@ -139,7 +139,7 @@ class TestBrowshot < Test::Unit::TestCase
139
139
  # Option disabled for most accounts
140
140
  browser = @browshot.browser_create({'mobile' => 1, 'flash' => 1, 'user_agent' => 'test'})
141
141
 
142
- # assert_equal false, browser['error'].nil?, "Browser cannot be created for this account"
142
+ assert_equal false, browser['error'].nil?, "Browser cannot be created for this account"
143
143
  # assert_equal false, browser['name'].nil?, "Browser name should be present"
144
144
  # assert_equal false, browser['user_agent'].nil?, "Browser user_agent should be present"
145
145
  # assert_equal false, browser['appname'].nil?, "Browser appname should be present"
@@ -393,7 +393,47 @@ class TestBrowshot < Test::Unit::TestCase
393
393
  end
394
394
 
395
395
  should "retrieve a thumbnail" do
396
- # TODO
396
+ screenshots = @browshot.screenshot_list()
397
+ assert_equal true, screenshots.length > 0, "There should be multiple screenshots"
398
+
399
+ screenshot_id = 0
400
+ screenshots.each do |key, screenshot|
401
+ screenshot_id = key
402
+ break
403
+ end
404
+
405
+ assert_equal true, screenshot_id.to_i > 0, "Screenshot ID should be positive"
406
+
407
+ thumbnail = @browshot.screenshot_thumbnail(screenshot_id, { 'width' => 480 });
408
+ assert_equal 'PNG', thumbnail[1..3], "Thumbnail is a valid PNG"
409
+ end
410
+
411
+ should "Fail hosting screenshots" do
412
+ screenshots = @browshot.screenshot_list()
413
+ assert_equal true, screenshots.length > 0, "There should be multiple screenshots"
414
+
415
+ screenshot_id = 0
416
+ screenshots.each do |key, screenshot|
417
+ screenshot_id = key
418
+ break
419
+ end
420
+
421
+ assert_equal true, screenshot_id.to_i > 0, "Screenshot ID should be positive"
422
+
423
+ hosting = @browshot.screenshot_host(screenshot_id)
424
+ assert_equal 'error', hosting['status'], "Default hosting option not enabled for this account"
425
+
426
+ hosting = @browshot.screenshot_host(screenshot_id, { 'hosting' => 's3' })
427
+ assert_equal 'error', hosting['status'], "S3 hosting option not enabled for this account"
428
+
429
+ hosting = @browshot.screenshot_host(screenshot_id, { 'hosting' => 's3', 'bucket' => 'mine' })
430
+ assert_equal 'error', hosting['status'], "S3 hosting option not enabled for this account"
431
+
432
+ hosting = @browshot.screenshot_host(screenshot_id, { 'hosting' => 'cdn' })
433
+ assert_equal 'error', hosting['status'], "CDN hosting option not enabled for this account"
434
+
435
+ hosting = @browshot.screenshot_host(screenshot_id, { 'hosting' => 'browshot' })
436
+ assert_equal 'error', hosting['status'], "Browshot hosting option not enabled for this account"
397
437
  end
398
438
 
399
439
  should "retrieve account information" 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.7.0
4
+ version: 1.8.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: 2012-04-14 00:00:00.000000000 Z
12
+ date: 2012-04-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
16
- requirement: &96980520 !ruby/object:Gem::Requirement
16
+ requirement: &103460540 !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: *96980520
24
+ version_requirements: *103460540
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: url
27
- requirement: &96979780 !ruby/object:Gem::Requirement
27
+ requirement: &103459740 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *96979780
35
+ version_requirements: *103459740
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: json
38
- requirement: &96979040 !ruby/object:Gem::Requirement
38
+ requirement: &103459060 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *96979040
46
+ version_requirements: *103459060
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: url
49
- requirement: &96978400 !ruby/object:Gem::Requirement
49
+ requirement: &103458360 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *96978400
57
+ version_requirements: *103458360
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: shoulda
60
- requirement: &96977720 !ruby/object:Gem::Requirement
60
+ requirement: &103495140 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *96977720
68
+ version_requirements: *103495140
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
- requirement: &97827640 !ruby/object:Gem::Requirement
71
+ requirement: &103494440 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 1.0.0
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *97827640
79
+ version_requirements: *103494440
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: jeweler
82
- requirement: &97826880 !ruby/object:Gem::Requirement
82
+ requirement: &103493760 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 1.6.4
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *97826880
90
+ version_requirements: *103493760
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rcov
93
- requirement: &97826140 !ruby/object:Gem::Requirement
93
+ requirement: &103492920 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,7 +98,7 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *97826140
101
+ version_requirements: *103492920
102
102
  description: ! 'Browshot (http://www.browshot.com/) is a web service to easily make
103
103
  screenshots of web pages in any screen size, as any device: iPhone©, iPad©, Android©,
104
104
  Nook©, PC, etc. Browshot has full Flash, JavaScript, CSS, & HTML5 support. The latest
@@ -141,7 +141,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
141
141
  version: '0'
142
142
  segments:
143
143
  - 0
144
- hash: -653828520181139472
144
+ hash: -73333035269990045
145
145
  required_rubygems_version: !ruby/object:Gem::Requirement
146
146
  none: false
147
147
  requirements: