shutterbug 0.0.11 → 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.
Files changed (49) hide show
  1. data/.ruby-version +1 -1
  2. data/.travis.yml +2 -3
  3. data/Guardfile +5 -0
  4. data/README.md +59 -10
  5. data/config.ru +5 -3
  6. data/demo/{withIframe.html → iframe_example.html} +0 -0
  7. data/demo/index.html +7 -24
  8. data/demo/oil-and-water/heatbath.svg +20 -0
  9. data/demo/oil-and-water/ke-gradient.svg +27 -0
  10. data/demo/oil-and-water/oil-and-water.svg +487 -0
  11. data/demo/simple_example.html +35 -0
  12. data/demo/svg_example.html +571 -0
  13. data/images/shutterbug.jpg +0 -0
  14. data/lib/shutterbug.rb +4 -6
  15. data/lib/shutterbug/cache_manager.rb +6 -0
  16. data/lib/shutterbug/cache_manager/cache_entry.rb +19 -0
  17. data/lib/shutterbug/cache_manager/no_cache.rb +19 -0
  18. data/lib/shutterbug/configuration.rb +20 -24
  19. data/lib/shutterbug/handlers.rb +7 -0
  20. data/lib/shutterbug/handlers/convert_handler.rb +38 -0
  21. data/lib/shutterbug/handlers/file_handlers.rb +9 -0
  22. data/lib/shutterbug/handlers/file_handlers/base.rb +39 -0
  23. data/lib/shutterbug/handlers/file_handlers/html_file.rb +22 -0
  24. data/lib/shutterbug/handlers/file_handlers/png_file.rb +23 -0
  25. data/lib/shutterbug/handlers/js_file_handler.rb +27 -0
  26. data/lib/shutterbug/{shutterbug.js → handlers/shutterbug.js} +26 -3
  27. data/lib/shutterbug/phantom_job.rb +17 -12
  28. data/lib/shutterbug/rackapp.rb +33 -31
  29. data/lib/shutterbug/storage.rb +6 -0
  30. data/lib/shutterbug/storage/file_storage.rb +20 -0
  31. data/lib/shutterbug/storage/s3_storage.rb +75 -0
  32. data/shutterbug.gemspec +3 -0
  33. data/spec/shared_examples_for_file_handlers.rb +16 -0
  34. data/spec/shared_examples_for_handlers.rb +26 -0
  35. data/spec/shared_examples_for_storage.rb +17 -0
  36. data/spec/shutterbug/configuration_spec.rb +83 -0
  37. data/spec/shutterbug/convert_handler_spec.rb +29 -0
  38. data/spec/shutterbug/file_storage_spec.rb +5 -0
  39. data/spec/shutterbug/html_file_handler_spec.rb +10 -0
  40. data/spec/shutterbug/js_file_handler_spec.rb +4 -0
  41. data/spec/shutterbug/png_file_handler_spec.rb +10 -0
  42. data/spec/shutterbug/rackapp_spec.rb +49 -41
  43. data/spec/shutterbug/s3_storage_spec.rb +12 -0
  44. metadata +205 -105
  45. data/lib/shutterbug/bug_file.rb +0 -22
  46. data/lib/shutterbug/html_file.rb +0 -3
  47. data/lib/shutterbug/js_file.rb +0 -11
  48. data/lib/shutterbug/png_file.rb +0 -3
  49. data/lib/shutterbug/service.rb +0 -39
@@ -0,0 +1,12 @@
1
+ require 'shared_examples_for_storage'
2
+ require 'fog'
3
+
4
+ describe Shutterbug::Storage::S3Storage do
5
+ let(:mock_write_result) { mock(:public_url => "http://amazon.cloud/url.png")}
6
+ before(:each) do
7
+ Shutterbug::Storage::S3Storage.stub!(:write => mock_write_result)
8
+ end
9
+
10
+ it_behaves_like "a storage provider" do
11
+ end
12
+ end
metadata CHANGED
@@ -1,105 +1,170 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: shutterbug
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 11
9
- version: 0.0.11
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Noah Paessel
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2013-07-24 00:00:00 -04:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2013-09-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.3'
21
22
  type: :development
22
- version_requirements: &id001 !ruby/object:Gem::Requirement
23
- requirements:
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
24
27
  - - ~>
25
- - !ruby/object:Gem::Version
26
- segments:
27
- - 1
28
- - 3
29
- version: "1.3"
30
- name: bundler
31
- requirement: *id001
28
+ - !ruby/object:Gem::Version
29
+ version: '1.3'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
32
39
  prerelease: false
33
- - !ruby/object:Gem::Dependency
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: guard-rspec
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
34
70
  type: :development
35
- version_requirements: &id002 !ruby/object:Gem::Requirement
36
- requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- segments:
40
- - 0
41
- version: "0"
42
- name: rake
43
- requirement: *id002
44
71
  prerelease: false
45
- - !ruby/object:Gem::Dependency
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rack-cors
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
46
86
  type: :development
47
- version_requirements: &id003 !ruby/object:Gem::Requirement
48
- requirements:
49
- - - ">="
50
- - !ruby/object:Gem::Version
51
- segments:
52
- - 0
53
- version: "0"
54
- name: rspec
55
- requirement: *id003
56
87
  prerelease: false
57
- - !ruby/object:Gem::Dependency
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: guard-rack
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
58
102
  type: :development
59
- version_requirements: &id004 !ruby/object:Gem::Requirement
60
- requirements:
61
- - - ">="
62
- - !ruby/object:Gem::Version
63
- segments:
64
- - 0
65
- version: "0"
66
- name: guard-rspec
67
- requirement: *id004
68
103
  prerelease: false
69
- - !ruby/object:Gem::Dependency
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rack-test
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
70
118
  type: :development
71
- version_requirements: &id005 !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- segments:
76
- - 0
77
- version: "0"
78
- name: rack-cors
79
- requirement: *id005
80
119
  prerelease: false
81
- - !ruby/object:Gem::Dependency
82
- type: :runtime
83
- version_requirements: &id006 !ruby/object:Gem::Requirement
84
- requirements:
85
- - - ">="
86
- - !ruby/object:Gem::Version
87
- segments:
88
- - 0
89
- version: "0"
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
90
127
  name: rack
91
- requirement: *id006
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: fog
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :runtime
92
151
  prerelease: false
93
- description: "\n A rack utility that will create and save images (pngs)\n for a part of your web page's current dom. These images\n become available as public '.png' resources in the rack application.\n Currently shutterbug supports HTML, SVG and Canvas elements.\n "
94
- email:
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ description: ! "\n A rack utility that will create and save images (pngs)\n for
159
+ a part of your web page's current dom. These images\n become available as public
160
+ '.png' resources in the rack application.\n Currently shutterbug supports HTML,
161
+ SVG and Canvas elements.\n "
162
+ email:
95
163
  - knowuh@gmail.com
96
164
  executables: []
97
-
98
165
  extensions: []
99
-
100
166
  extra_rdoc_files: []
101
-
102
- files:
167
+ files:
103
168
  - .gitignore
104
169
  - .rspec
105
170
  - .ruby-gemset
@@ -113,53 +178,88 @@ files:
113
178
  - config.ru
114
179
  - demo/iframe.html
115
180
  - demo/iframe2.html
181
+ - demo/iframe_example.html
116
182
  - demo/index.html
117
183
  - demo/main.css
118
- - demo/withIframe.html
184
+ - demo/oil-and-water/heatbath.svg
185
+ - demo/oil-and-water/ke-gradient.svg
186
+ - demo/oil-and-water/oil-and-water.svg
187
+ - demo/simple_example.html
188
+ - demo/svg_example.html
189
+ - images/shutterbug.jpg
119
190
  - lib/shutterbug.rb
120
- - lib/shutterbug/bug_file.rb
191
+ - lib/shutterbug/cache_manager.rb
192
+ - lib/shutterbug/cache_manager/cache_entry.rb
193
+ - lib/shutterbug/cache_manager/no_cache.rb
121
194
  - lib/shutterbug/configuration.rb
122
- - lib/shutterbug/html_file.rb
123
- - lib/shutterbug/js_file.rb
195
+ - lib/shutterbug/handlers.rb
196
+ - lib/shutterbug/handlers/convert_handler.rb
197
+ - lib/shutterbug/handlers/file_handlers.rb
198
+ - lib/shutterbug/handlers/file_handlers/base.rb
199
+ - lib/shutterbug/handlers/file_handlers/html_file.rb
200
+ - lib/shutterbug/handlers/file_handlers/png_file.rb
201
+ - lib/shutterbug/handlers/js_file_handler.rb
202
+ - lib/shutterbug/handlers/shutterbug.js
124
203
  - lib/shutterbug/phantom_job.rb
125
- - lib/shutterbug/png_file.rb
126
204
  - lib/shutterbug/rackapp.rb
127
205
  - lib/shutterbug/rasterize.js
128
- - lib/shutterbug/service.rb
129
- - lib/shutterbug/shutterbug.js
206
+ - lib/shutterbug/storage.rb
207
+ - lib/shutterbug/storage/file_storage.rb
208
+ - lib/shutterbug/storage/s3_storage.rb
130
209
  - shutterbug.gemspec
210
+ - spec/shared_examples_for_file_handlers.rb
211
+ - spec/shared_examples_for_handlers.rb
212
+ - spec/shared_examples_for_storage.rb
213
+ - spec/shutterbug/configuration_spec.rb
214
+ - spec/shutterbug/convert_handler_spec.rb
215
+ - spec/shutterbug/file_storage_spec.rb
216
+ - spec/shutterbug/html_file_handler_spec.rb
217
+ - spec/shutterbug/js_file_handler_spec.rb
218
+ - spec/shutterbug/png_file_handler_spec.rb
131
219
  - spec/shutterbug/rackapp_spec.rb
220
+ - spec/shutterbug/s3_storage_spec.rb
132
221
  - spec/spec_helper.rb
133
- has_rdoc: true
134
222
  homepage: http://github.com/concord-consortium/shutterbug
135
- licenses:
223
+ licenses:
136
224
  - MIT, Simplified BSD, Apache 2.0
137
225
  post_install_message:
138
226
  rdoc_options: []
139
-
140
- require_paths:
227
+ require_paths:
141
228
  - lib
142
- required_ruby_version: !ruby/object:Gem::Requirement
143
- requirements:
144
- - - ">="
145
- - !ruby/object:Gem::Version
146
- segments:
229
+ required_ruby_version: !ruby/object:Gem::Requirement
230
+ none: false
231
+ requirements:
232
+ - - ! '>='
233
+ - !ruby/object:Gem::Version
234
+ version: '0'
235
+ segments:
147
236
  - 0
148
- version: "0"
149
- required_rubygems_version: !ruby/object:Gem::Requirement
150
- requirements:
151
- - - ">="
152
- - !ruby/object:Gem::Version
153
- segments:
237
+ hash: -4086537772961595955
238
+ required_rubygems_version: !ruby/object:Gem::Requirement
239
+ none: false
240
+ requirements:
241
+ - - ! '>='
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ segments:
154
245
  - 0
155
- version: "0"
246
+ hash: -4086537772961595955
156
247
  requirements: []
157
-
158
248
  rubyforge_project:
159
- rubygems_version: 1.3.6
249
+ rubygems_version: 1.8.25
160
250
  signing_key:
161
251
  specification_version: 3
162
252
  summary: use Shutterbug::Rackapp
163
- test_files:
253
+ test_files:
254
+ - spec/shared_examples_for_file_handlers.rb
255
+ - spec/shared_examples_for_handlers.rb
256
+ - spec/shared_examples_for_storage.rb
257
+ - spec/shutterbug/configuration_spec.rb
258
+ - spec/shutterbug/convert_handler_spec.rb
259
+ - spec/shutterbug/file_storage_spec.rb
260
+ - spec/shutterbug/html_file_handler_spec.rb
261
+ - spec/shutterbug/js_file_handler_spec.rb
262
+ - spec/shutterbug/png_file_handler_spec.rb
164
263
  - spec/shutterbug/rackapp_spec.rb
264
+ - spec/shutterbug/s3_storage_spec.rb
165
265
  - spec/spec_helper.rb
@@ -1,22 +0,0 @@
1
- module Shutterbug
2
- class BugFile
3
- def initialize(filename)
4
- @filename = filename
5
- end
6
-
7
- def open
8
- @stream_file = File.open(@filename, 'r')
9
- @stream_file.rewind
10
- end
11
-
12
- def each(&blk)
13
- @stream_file.each(&blk)
14
- ensure
15
- @stream_file.close
16
- end
17
-
18
- def size
19
- @stream_file.size
20
- end
21
- end
22
- end
@@ -1,3 +0,0 @@
1
- module Shutterbug
2
- class HtmlFile < BugFile; end
3
- end
@@ -1,11 +0,0 @@
1
- module Shutterbug
2
- class JsFile < BugFile
3
- def initialize(_config=Configuration.instance())
4
- @config = _config
5
- @javascript = File.read(@config.js_file).gsub(/CONVERT_PATH/,@config.convert_path)
6
- end
7
- def open
8
- @stream_file = StringIO.new(@javascript)
9
- end
10
- end
11
- end
@@ -1,3 +0,0 @@
1
- module Shutterbug
2
- class PngFile < BugFile; end
3
- end
@@ -1,39 +0,0 @@
1
- require 'stringio'
2
- module Shutterbug
3
- class Service
4
-
5
- def initialize(_config = Configuration.instance)
6
- @file_cache = {}
7
- @config = _config
8
- @js_file = JsFile.new()
9
- end
10
-
11
- def convert(base_url, html, css="", width=1000, height=700)
12
- job = PhantomJob.new(base_url, html, css, width, height)
13
- key = job.cache_key
14
- unless (@file_cache[key])
15
- job.rasterize
16
- @file_cache[key] = {'html' => job.html_file, 'png' => job.png_file }
17
- end
18
- return key
19
- end
20
-
21
- def get_png_file(sha)
22
- file = @file_cache[sha]['png']
23
- file.open
24
- return file
25
- end
26
-
27
- def get_html_file(sha)
28
- file = @file_cache[sha]['html']
29
- file.open
30
- return file
31
- end
32
-
33
- def get_shutterbug_file
34
- file = @js_file
35
- file.open
36
- return file
37
- end
38
- end
39
- end