httpimagestore 1.6.0 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. data/Gemfile +4 -3
  2. data/Gemfile.lock +12 -16
  3. data/README.md +73 -0
  4. data/VERSION +1 -1
  5. data/bin/httpimagestore +7 -7
  6. data/features/data-uri.feature +55 -0
  7. data/features/error-reporting.feature +21 -3
  8. data/features/source-failover.feature +71 -0
  9. data/features/step_definitions/httpimagestore_steps.rb +27 -12
  10. data/features/storage.feature +26 -25
  11. data/features/support/tiny.png +0 -0
  12. data/features/xid-forwarding.feature +49 -0
  13. data/httpimagestore.gemspec +19 -23
  14. data/lib/httpimagestore/configuration/file.rb +6 -0
  15. data/lib/httpimagestore/configuration/handler.rb +4 -1
  16. data/lib/httpimagestore/configuration/identify.rb +2 -2
  17. data/lib/httpimagestore/configuration/output.rb +20 -1
  18. data/lib/httpimagestore/configuration/s3.rb +15 -9
  19. data/lib/httpimagestore/configuration/source_failover.rb +51 -0
  20. data/lib/httpimagestore/configuration/thumbnailer.rb +7 -7
  21. data/lib/httpimagestore/error_reporter.rb +9 -1
  22. data/lib/httpimagestore/ruby_string_template.rb +12 -7
  23. data/load_test/load_test.jmx +50 -77
  24. data/load_test/thumbnail_specs_v2.csv +10 -0
  25. data/spec/configuration_file_spec.rb +27 -2
  26. data/spec/configuration_identify_spec.rb +25 -2
  27. data/spec/configuration_s3_spec.rb +29 -3
  28. data/spec/configuration_source_failover_spec.rb +101 -0
  29. data/spec/configuration_thumbnailer_spec.rb +63 -8
  30. data/spec/ruby_string_template_spec.rb +4 -0
  31. data/spec/support/full.cfg +167 -33
  32. metadata +19 -23
  33. data/.idea/.name +0 -1
  34. data/.idea/.rakeTasks +0 -7
  35. data/.idea/codeStyleSettings.xml +0 -13
  36. data/.idea/dictionaries/wcc.xml +0 -8
  37. data/.idea/encodings.xml +0 -5
  38. data/.idea/httpimagestore.iml +0 -69
  39. data/.idea/jenkinsSettings.xml +0 -9
  40. data/.idea/misc.xml +0 -5
  41. data/.idea/modules.xml +0 -9
  42. data/.idea/scopes/scope_settings.xml +0 -5
  43. data/.idea/vcs.xml +0 -7
@@ -1,49 +1,183 @@
1
- s3 key="AKIAJMUYVYOSACNXLPTQ" secret="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"
1
+ s3 key="AKIAJ672BX2L6KYBFWSQ" secret="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" ssl=false
2
2
 
3
- path {
4
- "uri" "#{path}"
5
- "hash" "#{input_digest}.#{image_mime_extension}"
6
- "hash-name" "#{input_digest}/#{image_name}.#{image_mime_extension}"
7
- "structured" "#{dirname}/#{input_digest}/#{basename}.#{image_mime_extension}"
8
- "structured-name" "#{dirname}/#{input_digest}/#{basename}-#{image_name}.#{image_mime_extension}"
3
+ # API - v2 thumbnails - /thumbnails/<path>[?<query>]
4
+ path "hash" "#{input_digest}.#{image_mime_extension}"
5
+ path "path" "#{path}"
6
+ path "uri_part" "/thumbnails/#{input_digest}/#{name}.#{image_mime_extension}"
7
+
8
+ ## User uploaded content - always JPEG converted, not bigger than 2160x2160 and in hight quality compression
9
+ post "iss" "v2" "thumbnails" "pictures" "/(?<name>.+?)(\\.[^\\.]+)?$/" {
10
+ thumbnail "input" "original" operation="limit" width=2160 height=2160 format="jpeg" quality=95
11
+ store_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
12
+ output_store_path "original" path="uri_part"
13
+ }
14
+
15
+ post "iss" "v2" "thumbnails" "pictures" {
16
+ thumbnail "input" "original" operation="limit" width=2160 height=2160 format="jpeg" quality=95
17
+ store_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
18
+ output_store_path "original"
19
+ }
20
+
21
+ put "iss" "v2" "thumbnails" "pictures" {
22
+ thumbnail "input" "original" operation="limit" width=2160 height=2160 format="jpeg" quality=95
23
+ store_s3 "original" bucket="test.s3.whatclinic.com" path="path" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
24
+ output_store_path "original"
25
+ }
26
+
27
+ ## Uploaded by us for use on the website - whatever we send
28
+ post "iss" "v2" "thumbnails" "images" "/(?<name>.+?)(\\.[^\\.]+)?$/" {
29
+ identify "input"
30
+ store_s3 "input" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
31
+ output_store_path "input" path="uri_part"
32
+ }
33
+
34
+ post "iss" "v2" "thumbnails" "images" {
35
+ identify "input"
36
+ store_s3 "input" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
37
+ output_store_path "input"
38
+ }
39
+
40
+ put "iss" "v2" "thumbnails" "images" {
41
+ identify "input"
42
+ store_s3 "input" bucket="test.s3.whatclinic.com" path="path" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
43
+ output_store_path "input"
44
+ }
45
+
46
+ ## Thumbailing - keep input format; default JPEG quality is 85
47
+ ### Data URI
48
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&:width" "&:height" "&:operation?crop" "&:float-y?0.5" "&:background-color?white" "&data-uri=true" {
49
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
50
+ thumbnail "original" "thumbnail" operation="#{operation}" width="#{width}" height="#{height}" options="float-y:#{float-y},background-color:#{background-color},quality:30"
51
+ output_data_uri_image "thumbnail" cache-control="s-maxage=31557600"
52
+ }
53
+
54
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&:width" "&:height?1080" "&:operation?fit" "&:float-y?0.5" "&:background-color?white" "&data-uri=true" {
55
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
56
+ thumbnail "original" "thumbnail" operation="#{operation}" width="#{width}" height="#{height}" options="float-y:#{float-y},background-color:#{background-color},quality:30"
57
+ output_data_uri_image "thumbnail" cache-control="s-maxage=31557600"
9
58
  }
10
59
 
11
- put "thumbnail" ":name_list" {
12
- thumbnail "input" {
13
- "original" operation="limit" width=1080 height=1080 format="jpeg" quality=95
14
- "small" operation="crop" width=128 height=128 format="jpeg" if-image-name-on="#{name_list}"
15
- "padded" operation="pad" width=128 height=128 format="jpeg" background-color="gray" if-image-name-on="#{name_list}"
16
- }
60
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&:height" "&:width?1080" "&:operation?fit" "&:float-y?0.5" "&:background-color?white" "&data-uri=true" {
61
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
62
+ thumbnail "original" "thumbnail" operation="#{operation}" width="#{width}" height="#{height}" options="float-y:#{float-y},background-color:#{background-color},quality:30"
63
+ output_data_uri_image "thumbnail" cache-control="s-maxage=31557600"
64
+ }
17
65
 
18
- store_s3 "input" bucket="httpimagestoretest" path="hash" cache-control="public, max-age=31557600, s-maxage=0" public=true
19
- store_s3 "original" bucket="httpimagestoretest-originals" path="hash"
20
- store_s3 "small" bucket="httpimagestoretest" path="hash-name" cache-control="public, max-age=31557600, s-maxage=0" public=true if-image-name-on="#{name_list}"
21
- store_s3 "padded" bucket="httpimagestoretest" path="hash-name" cache-control="public, max-age=31557600, s-maxage=0" public=true if-image-name-on="#{name_list}"
66
+ ### Thumbnailing based on query string parameters
67
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&:width" "&:height" "&:operation?crop" "&:float-y?0.5" "&:background-color?white" {
68
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
69
+ thumbnail "original" "thumbnail" operation="#{operation}" width="#{width}" height="#{height}" options="float-y:#{float-y},background-color:#{background-color}"
70
+ output_image "thumbnail" cache-control="public, max-age=31557600, s-maxage=0"
71
+ }
22
72
 
23
- output_store_url {
24
- "input"
25
- "small" if-image-name-on="#{name_list}"
26
- "padded" if-image-name-on="#{name_list}"
27
- }
73
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&:width" "&:height?1080" "&:operation?fit" "&:float-y?0.5" "&:background-color?white" {
74
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
75
+ thumbnail "original" "thumbnail" operation="#{operation}" width="#{width}" height="#{height}" options="float-y:#{float-y},background-color:#{background-color}"
76
+ output_image "thumbnail" cache-control="public, max-age=31557600, s-maxage=0"
28
77
  }
29
78
 
30
- post "original" {
31
- thumbnail "input" {
32
- "original" operation="limit" width=1080 height=1080 format="jpeg" quality=95
33
- }
79
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&:height" "&:width?1080" "&:operation?fit" "&:float-y?0.5" "&:background-color?white" {
80
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
81
+ thumbnail "original" "thumbnail" operation="#{operation}" width="#{width}" height="#{height}" options="float-y:#{float-y},background-color:#{background-color}"
82
+ output_image "thumbnail" cache-control="public, max-age=31557600, s-maxage=0"
83
+ }
34
84
 
35
- store_s3 "original" bucket="rhoriginals" path="hash"
85
+ ### Thumbnailing to predefined thumbnail sepcs
86
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&type=search" {
87
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
88
+ thumbnail "original" "thumbnail" operation="pad" width="162" height="162" options="background-color:0xF0F0F0"
89
+ output_image "thumbnail" cache-control="public, max-age=31557600, s-maxage=0"
90
+ }
36
91
 
37
- output_store_path "original"
92
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&type=search_v2" {
93
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
94
+ thumbnail "original" "thumbnail" operation="crop" width="242" height="162" options="float-y:0.2,background-color:0xF0F0F0"
95
+ output_image "thumbnail" cache-control="public, max-age=31557600, s-maxage=0"
96
+ }
97
+
98
+ # Special version of search type that can be included in Data URL; will be cache by Varnish only for it's own use in ESI
99
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&type=search_v2_dataurl" {
100
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
101
+ thumbnail "original" "thumbnail" operation="crop" width="242" height="162" options="float-y:0.2,background-color:0xF0F0F0,quality:30"
102
+ output_data_uri_image "thumbnail" cache-control="s-maxage=31557600"
38
103
  }
39
104
 
40
- get "thumbnail" "v1" ":operation" ":width" ":height" ":options" {
41
- source_s3 "original" bucket="rhoriginals" path="uri"
105
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&type=mobile_search_v2" {
106
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
107
+ thumbnail "original" "thumbnail" operation="pad" width="98" height="148"
108
+ output_image "thumbnail" cache-control="public, max-age=31557600, s-maxage=0"
109
+ }
110
+
111
+ # Special version of search type that can be included in Data URL; will be cache by Varnish only for it's own use in ESI
112
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&type=mobile_search_v2_dataurl" {
113
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
114
+ thumbnail "original" "thumbnail" operation="pad" width="98" height="148" options="quality:30"
115
+ output_data_uri_image "thumbnail" cache-control="s-maxage=31557600"
116
+ }
42
117
 
43
- thumbnail "original" {
44
- "thumbnail" operation="#{operation}" width="#{width}" height="#{height}" options="#{options}" quality=84 format="jpeg"
45
- }
118
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&type=original" {
119
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
120
+ thumbnail "original" "thumbnail" operation="crop" width="input" height="input" options="background-color:white"
121
+ output_image "thumbnail" cache-control="public, max-age=31557600, s-maxage=0"
122
+ }
123
+
124
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&type=search_thumb" {
125
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
126
+ thumbnail "original" "thumbnail" operation="pad" width="28" height="28" options="background-color:0xF0F0F0"
127
+ output_image "thumbnail" cache-control="public, max-age=31557600, s-maxage=0"
128
+ }
129
+
130
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&type=brochure" {
131
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
132
+ thumbnail "original" "thumbnail" operation="pad" width="264" height="264" options="background-color:0xF0F0F0"
133
+ output_image "thumbnail" cache-control="public, max-age=31557600, s-maxage=0"
134
+ }
135
+
136
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&type=brochure_thumb" {
137
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
138
+ thumbnail "original" "thumbnail" operation="pad" width="40" height="40" options="background-color:0xF0F0F0"
139
+ output_image "thumbnail" cache-control="public, max-age=31557600, s-maxage=0"
140
+ }
141
+
142
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&type=admin" {
143
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
144
+ thumbnail "original" "thumbnail" operation="pad" width="160" height="160" options="background-color:0xF0F0F0"
145
+ output_image "thumbnail" cache-control="public, max-age=31557600, s-maxage=0"
146
+ }
147
+
148
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&type=admin_thumb" {
149
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
150
+ thumbnail "original" "thumbnail" operation="pad" width="65" height="65" options="background-color:0xF0F0F0"
151
+ output_image "thumbnail" cache-control="public, max-age=31557600, s-maxage=0"
152
+ }
153
+
154
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&type=treatment_thumb" {
155
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
156
+ thumbnail "original" "thumbnail" operation="pad" width="80" height="60" options="background-color:0xF0F0F0"
157
+ output_image "thumbnail" cache-control="public, max-age=31557600, s-maxage=0"
158
+ }
159
+
160
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&type=staff_member_thumb" {
161
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
162
+ thumbnail "original" "thumbnail" operation="pad" width="50" height="50" options="background-color:0xF0F0F0"
163
+ output_image "thumbnail" cache-control="public, max-age=31557600, s-maxage=0"
164
+ }
165
+
166
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&type=consultation" {
167
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
168
+ thumbnail "original" "thumbnail" operation="pad" width="126" height="126" options="background-color:0xF0F0F0"
169
+ output_image "thumbnail" cache-control="public, max-age=31557600, s-maxage=0"
170
+ }
171
+
172
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&type=clinic_google_map_thumb" {
173
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
174
+ thumbnail "original" "thumbnail" operation="pad" width="74" height="74" options="background-color:0xF0F0F0"
175
+ output_image "thumbnail" cache-control="public, max-age=31557600, s-maxage=0"
176
+ }
46
177
 
178
+ get "iss" "v2" "thumbnails" "/(|.+?\\/)(?<input_digest>[0-f]{16}).*\\.(?<image_mime_extension>...)$/" "&type=large" {
179
+ source_s3 "original" bucket="test.s3.whatclinic.com" path="hash" prefix="dev/httpimagestore/v1/" cache-root="/var/cache/httpimagestore/s3"
180
+ thumbnail "original" "thumbnail" operation="limit" width="1200" height="900" interlace="PlaneInterlace"
47
181
  output_image "thumbnail" cache-control="public, max-age=31557600, s-maxage=0"
48
182
  }
49
183
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: httpimagestore
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.7.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-04 00:00:00.000000000 Z
12
+ date: 2014-07-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: unicorn-cuba-base
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 1.1.2
21
+ version: 1.2.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 1.1.2
29
+ version: 1.2.0
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: httpthumbnailer-client
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: 1.1.1
37
+ version: 1.2.0
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: 1.1.1
45
+ version: 1.2.0
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: aws-sdk
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -224,17 +224,17 @@ dependencies:
224
224
  requirement: !ruby/object:Gem::Requirement
225
225
  none: false
226
226
  requirements:
227
- - - ! '>='
227
+ - - ~>
228
228
  - !ruby/object:Gem::Version
229
- version: '0'
229
+ version: 1.2.0
230
230
  type: :development
231
231
  prerelease: false
232
232
  version_requirements: !ruby/object:Gem::Requirement
233
233
  none: false
234
234
  requirements:
235
- - - ! '>='
235
+ - - ~>
236
236
  - !ruby/object:Gem::Version
237
- version: '0'
237
+ version: 1.2.0
238
238
  description: Thumbnails images using httpthumbnailer and stored data on HTTP server
239
239
  (S3)
240
240
  email: jpastuszek@gmail.com
@@ -246,17 +246,6 @@ extra_rdoc_files:
246
246
  - README.md
247
247
  files:
248
248
  - .document
249
- - .idea/.name
250
- - .idea/.rakeTasks
251
- - .idea/codeStyleSettings.xml
252
- - .idea/dictionaries/wcc.xml
253
- - .idea/encodings.xml
254
- - .idea/httpimagestore.iml
255
- - .idea/jenkinsSettings.xml
256
- - .idea/misc.xml
257
- - .idea/modules.xml
258
- - .idea/scopes/scope_settings.xml
259
- - .idea/vcs.xml
260
249
  - .rspec
261
250
  - Gemfile
262
251
  - Gemfile.lock
@@ -267,11 +256,13 @@ files:
267
256
  - bin/httpimagestore
268
257
  - features/cache-control.feature
269
258
  - features/compatibility.feature
259
+ - features/data-uri.feature
270
260
  - features/error-reporting.feature
271
261
  - features/flexi.feature
272
262
  - features/health-check.feature
273
263
  - features/request-matching.feature
274
264
  - features/s3-store-and-thumbnail.feature
265
+ - features/source-failover.feature
275
266
  - features/step_definitions/httpimagestore_steps.rb
276
267
  - features/storage.feature
277
268
  - features/support/env.rb
@@ -280,6 +271,8 @@ files:
280
271
  - features/support/test.jpg
281
272
  - features/support/test.png
282
273
  - features/support/test.txt
274
+ - features/support/tiny.png
275
+ - features/xid-forwarding.feature
283
276
  - httpimagestore.gemspec
284
277
  - lib/httpimagestore/aws_sdk_regions_hack.rb
285
278
  - lib/httpimagestore/configuration.rb
@@ -289,6 +282,7 @@ files:
289
282
  - lib/httpimagestore/configuration/output.rb
290
283
  - lib/httpimagestore/configuration/path.rb
291
284
  - lib/httpimagestore/configuration/s3.rb
285
+ - lib/httpimagestore/configuration/source_failover.rb
292
286
  - lib/httpimagestore/configuration/thumbnailer.rb
293
287
  - lib/httpimagestore/error_reporter.rb
294
288
  - lib/httpimagestore/ruby_string_template.rb
@@ -296,12 +290,14 @@ files:
296
290
  - load_test/load_test.1k.ec9bde794.m1.small.csv
297
291
  - load_test/load_test.jmx
298
292
  - load_test/thumbnail_specs.csv
293
+ - load_test/thumbnail_specs_v2.csv
299
294
  - spec/configuration_file_spec.rb
300
295
  - spec/configuration_handler_spec.rb
301
296
  - spec/configuration_identify_spec.rb
302
297
  - spec/configuration_output_spec.rb
303
298
  - spec/configuration_path_spec.rb
304
299
  - spec/configuration_s3_spec.rb
300
+ - spec/configuration_source_failover_spec.rb
305
301
  - spec/configuration_spec.rb
306
302
  - spec/configuration_thumbnailer_spec.rb
307
303
  - spec/ruby_string_template_spec.rb
@@ -324,7 +320,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
324
320
  version: '0'
325
321
  segments:
326
322
  - 0
327
- hash: 3462476370179380761
323
+ hash: 3070670501834592299
328
324
  required_rubygems_version: !ruby/object:Gem::Requirement
329
325
  none: false
330
326
  requirements:
@@ -333,7 +329,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
333
329
  version: '0'
334
330
  requirements: []
335
331
  rubyforge_project:
336
- rubygems_version: 1.8.25
332
+ rubygems_version: 1.8.23
337
333
  signing_key:
338
334
  specification_version: 3
339
335
  summary: HTTP based image storage and thumbnailer
data/.idea/.name DELETED
@@ -1 +0,0 @@
1
- httpimagestore
data/.idea/.rakeTasks DELETED
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <Settings><!--This file was automatically generated by Ruby plugin.
3
- You are allowed to:
4
- 1. Remove rake task
5
- 2. Add existing rake tasks
6
- To add existing rake tasks automatically delete this file and reload the project.
7
- --><RakeGroup description="" fullCmd="" taksId="rake"><RakeTask description="Build gem into pkg/" fullCmd="build" taksId="build" /><RakeTask description="Remove any temporary products" fullCmd="clean" taksId="clean" /><RakeTask description="Remove any generated file" fullCmd="clobber" taksId="clobber" /><RakeTask description="Remove RDoc HTML files" fullCmd="clobber_rdoc" taksId="clobber_rdoc" /><RakeTask description="Start IRB with all runtime dependencies loaded" fullCmd="console[script]" taksId="console[script]" /><RakeTask description="Run Cucumber features" fullCmd="features" taksId="features" /><RakeGroup description="" fullCmd="" taksId="gemcutter"><RakeTask description="Release gem to Gemcutter" fullCmd="gemcutter:release" taksId="release" /></RakeGroup><RakeTask description="Generate and validate gemspec" fullCmd="gemspec" taksId="gemspec" /><RakeGroup description="" fullCmd="" taksId="gemspec"><RakeTask description="Display the gemspec for debugging purposes, as jeweler knows it (not from the filesystem)" fullCmd="gemspec:debug" taksId="debug" /><RakeTask description="Regenerate the gemspec on the filesystem" fullCmd="gemspec:generate" taksId="generate" /><RakeTask description="Regenerate and validate gemspec, and then commits and pushes to git" fullCmd="gemspec:release" taksId="release" /><RakeTask description="Validates the gemspec on the filesystem" fullCmd="gemspec:validate" taksId="validate" /></RakeGroup><RakeGroup description="" fullCmd="" taksId="git"><RakeTask description="Tag and push release to git" fullCmd="git:release" taksId="release" /></RakeGroup><RakeTask description="Build and install gem using `gem install`" fullCmd="install" taksId="install" /><RakeTask description="Run RSpec code examples" fullCmd="rcov" taksId="rcov" /><RakeTask description="Build RDoc HTML files" fullCmd="rdoc" taksId="rdoc" /><RakeTask description="Release gem" fullCmd="release" taksId="release" /><RakeTask description="Rebuild RDoc HTML files" fullCmd="rerdoc" taksId="rerdoc" /><RakeTask description="Run RSpec code examples" fullCmd="spec" taksId="spec" /><RakeTask description="Displays the current version" fullCmd="version" taksId="version" /><RakeGroup description="" fullCmd="" taksId="version"><RakeGroup description="" fullCmd="" taksId="bump"><RakeTask description="Bump the major version by 1" fullCmd="version:bump:major" taksId="major" /><RakeTask description="Bump the a minor version by 1" fullCmd="version:bump:minor" taksId="minor" /><RakeTask description="Bump the patch version by 1" fullCmd="version:bump:patch" taksId="patch" /></RakeGroup><RakeTask description="Writes out an explicit version" fullCmd="version:write" taksId="write" /></RakeGroup><RakeTask description="" fullCmd="console" taksId="console" /><RakeTask description="" fullCmd="default" taksId="default" /><RakeTask description="" fullCmd="gemspec_required" taksId="gemspec_required" /><RakeTask description="" fullCmd="rdoc/index.html" taksId="rdoc/index.html" /><RakeTask description="" fullCmd="version_required" taksId="version_required" /></RakeGroup></Settings>
@@ -1,13 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectCodeStyleSettingsManager">
4
- <option name="PER_PROJECT_SETTINGS">
5
- <value>
6
- <XML>
7
- <option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
8
- </XML>
9
- </value>
10
- </option>
11
- </component>
12
- </project>
13
-
@@ -1,8 +0,0 @@
1
- <component name="ProjectDictionaryState">
2
- <dictionary name="wcc">
3
- <words>
4
- <w>httpimagestore</w>
5
- <w>httpthumbnailer</w>
6
- </words>
7
- </dictionary>
8
- </component>
data/.idea/encodings.xml DELETED
@@ -1,5 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
4
- </project>
5
-
@@ -1,69 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="RUBY_MODULE" version="4">
3
- <component name="FacetManager">
4
- <facet type="gem" name="Gem">
5
- <configuration>
6
- <option name="GEM_APP_ROOT_PATH" value="$MODULE_DIR$" />
7
- <option name="GEM_APP_TEST_PATH" value="" />
8
- <option name="GEM_APP_LIB_PATH" value="$MODULE_DIR$/lib" />
9
- </configuration>
10
- </facet>
11
- </component>
12
- <component name="NewModuleRootManager">
13
- <content url="file://$MODULE_DIR$" />
14
- <orderEntry type="inheritedJdk" />
15
- <orderEntry type="sourceFolder" forTests="false" />
16
- <orderEntry type="library" scope="PROVIDED" name="addressable (v2.3.5, RVM: ruby-1.9.3-p429) [gem]" level="application" />
17
- <orderEntry type="library" scope="PROVIDED" name="aws-sdk (v1.18.0, RVM: ruby-1.9.3-p429) [gem]" level="application" />
18
- <orderEntry type="library" scope="PROVIDED" name="builder (v3.2.2, RVM: ruby-1.9.3-p429) [gem]" level="application" />
19
- <orderEntry type="library" scope="PROVIDED" name="bundler (v1.3.5, RVM: ruby-1.9.3-p429) [gem]" level="application" />
20
- <orderEntry type="library" scope="PROVIDED" name="cli (v1.3.1, RVM: ruby-1.9.3-p429) [gem]" level="application" />
21
- <orderEntry type="library" scope="PROVIDED" name="cuba (v3.1.0, RVM: ruby-1.9.3-p429) [gem]" level="application" />
22
- <orderEntry type="library" scope="PROVIDED" name="cucumber (v1.3.8, RVM: ruby-1.9.3-p429) [gem]" level="application" />
23
- <orderEntry type="library" scope="PROVIDED" name="daemon (v1.1.0, RVM: ruby-1.9.3-p429) [gem]" level="application" />
24
- <orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.2.4, RVM: ruby-1.9.3-p429) [gem]" level="application" />
25
- <orderEntry type="library" scope="PROVIDED" name="facter (v1.6.18, RVM: ruby-1.9.3-p429) [gem]" level="application" />
26
- <orderEntry type="library" scope="PROVIDED" name="faraday (v0.8.8, RVM: ruby-1.9.3-p429) [gem]" level="application" />
27
- <orderEntry type="library" scope="PROVIDED" name="gherkin (v2.12.1, RVM: ruby-1.9.3-p429) [gem]" level="application" />
28
- <orderEntry type="library" scope="PROVIDED" name="git (v1.2.6, RVM: ruby-1.9.3-p429) [gem]" level="application" />
29
- <orderEntry type="library" scope="PROVIDED" name="github_api (v0.10.1, RVM: ruby-1.9.3-p429) [gem]" level="application" />
30
- <orderEntry type="library" scope="PROVIDED" name="hashie (v2.0.5, RVM: ruby-1.9.3-p429) [gem]" level="application" />
31
- <orderEntry type="library" scope="PROVIDED" name="highline (v1.6.19, RVM: ruby-1.9.3-p429) [gem]" level="application" />
32
- <orderEntry type="library" scope="PROVIDED" name="httpauth (v0.2.0, RVM: ruby-1.9.3-p429) [gem]" level="application" />
33
- <orderEntry type="library" scope="PROVIDED" name="httpclient (v2.3.4.1, RVM: ruby-1.9.3-p429) [gem]" level="application" />
34
- <orderEntry type="library" scope="PROVIDED" name="httpthumbnailer (v1.1.1, /Users/wcc/Documents/httpthumbnailer) [path][gem]" level="application" />
35
- <orderEntry type="library" scope="PROVIDED" name="httpthumbnailer-client (v1.1.1, RVM: ruby-1.9.3-p429) [gem]" level="application" />
36
- <orderEntry type="library" scope="PROVIDED" name="jeweler (v1.8.7, RVM: ruby-1.9.3-p429) [gem]" level="application" />
37
- <orderEntry type="library" scope="PROVIDED" name="json (v1.8.0, RVM: ruby-1.9.3-p429) [gem]" level="application" />
38
- <orderEntry type="library" scope="PROVIDED" name="jwt (v0.1.8, RVM: ruby-1.9.3-p429) [gem]" level="application" />
39
- <orderEntry type="library" scope="PROVIDED" name="kgio (v2.8.1, RVM: ruby-1.9.3-p429) [gem]" level="application" />
40
- <orderEntry type="library" scope="PROVIDED" name="mime-types (v1.25, RVM: ruby-1.9.3-p429) [gem]" level="application" />
41
- <orderEntry type="library" scope="PROVIDED" name="msgpack (v0.5.5, RVM: ruby-1.9.3-p429) [gem]" level="application" />
42
- <orderEntry type="library" scope="PROVIDED" name="multi_json (v1.8.0, RVM: ruby-1.9.3-p429) [gem]" level="application" />
43
- <orderEntry type="library" scope="PROVIDED" name="multi_test (v0.0.2, RVM: ruby-1.9.3-p429) [gem]" level="application" />
44
- <orderEntry type="library" scope="PROVIDED" name="multi_xml (v0.5.5, RVM: ruby-1.9.3-p429) [gem]" level="application" />
45
- <orderEntry type="library" scope="PROVIDED" name="multipart-parser (v0.1.1, RVM: ruby-1.9.3-p429) [gem]" level="application" />
46
- <orderEntry type="library" scope="PROVIDED" name="multipart-post (v1.2.0, RVM: ruby-1.9.3-p429) [gem]" level="application" />
47
- <orderEntry type="library" scope="PROVIDED" name="nokogiri (v1.5.10, RVM: ruby-1.9.3-p429) [gem]" level="application" />
48
- <orderEntry type="library" scope="PROVIDED" name="oauth2 (v0.9.2, RVM: ruby-1.9.3-p429) [gem]" level="application" />
49
- <orderEntry type="library" scope="PROVIDED" name="prawn (v0.8.4, RVM: ruby-1.9.3-p429) [gem]" level="application" />
50
- <orderEntry type="library" scope="PROVIDED" name="prawn-core (v0.8.4, RVM: ruby-1.9.3-p429) [gem]" level="application" />
51
- <orderEntry type="library" scope="PROVIDED" name="prawn-layout (v0.8.4, RVM: ruby-1.9.3-p429) [gem]" level="application" />
52
- <orderEntry type="library" scope="PROVIDED" name="prawn-security (v0.8.4, RVM: ruby-1.9.3-p429) [gem]" level="application" />
53
- <orderEntry type="library" scope="PROVIDED" name="rack (v1.5.2, RVM: ruby-1.9.3-p429) [gem]" level="application" />
54
- <orderEntry type="library" scope="PROVIDED" name="raindrops (v0.12.0, RVM: ruby-1.9.3-p429) [gem]" level="application" />
55
- <orderEntry type="library" scope="PROVIDED" name="rake (v10.1.0, RVM: ruby-1.9.3-p429) [gem]" level="application" />
56
- <orderEntry type="library" scope="PROVIDED" name="rdoc (v3.12.2, RVM: ruby-1.9.3-p429) [gem]" level="application" />
57
- <orderEntry type="library" scope="PROVIDED" name="rmagick (v2.13.2, RVM: ruby-1.9.3-p429) [gem]" level="application" />
58
- <orderEntry type="library" scope="PROVIDED" name="rspec (v2.14.1, RVM: ruby-1.9.3-p429) [gem]" level="application" />
59
- <orderEntry type="library" scope="PROVIDED" name="rspec-core (v2.14.5, RVM: ruby-1.9.3-p429) [gem]" level="application" />
60
- <orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v2.14.2, RVM: ruby-1.9.3-p429) [gem]" level="application" />
61
- <orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v2.14.3, RVM: ruby-1.9.3-p429) [gem]" level="application" />
62
- <orderEntry type="library" scope="PROVIDED" name="ruby-ip (v0.9.1, RVM: ruby-1.9.3-p429) [gem]" level="application" />
63
- <orderEntry type="library" scope="PROVIDED" name="sdl4r (v0.9.11, RVM: ruby-1.9.3-p429) [gem]" level="application" />
64
- <orderEntry type="library" scope="PROVIDED" name="unicorn (v4.6.3, RVM: ruby-1.9.3-p429) [gem]" level="application" />
65
- <orderEntry type="library" scope="PROVIDED" name="unicorn-cuba-base (v1.1.2, RVM: ruby-1.9.3-p429) [gem]" level="application" />
66
- <orderEntry type="library" scope="PROVIDED" name="uuidtools (v2.1.4, RVM: ruby-1.9.3-p429) [gem]" level="application" />
67
- </component>
68
- </module>
69
-
@@ -1,9 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="Jenkins.Application.Settings">
4
- <option name="rssSettings">
5
- <RssSettings />
6
- </option>
7
- </component>
8
- </project>
9
-
data/.idea/misc.xml DELETED
@@ -1,5 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectRootManager" version="2" project-jdk-name="RVM: ruby-1.9.3-p429" project-jdk-type="RUBY_SDK" />
4
- </project>
5
-
data/.idea/modules.xml DELETED
@@ -1,9 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectModuleManager">
4
- <modules>
5
- <module fileurl="file://$PROJECT_DIR$/.idea/httpimagestore.iml" filepath="$PROJECT_DIR$/.idea/httpimagestore.iml" />
6
- </modules>
7
- </component>
8
- </project>
9
-
@@ -1,5 +0,0 @@
1
- <component name="DependencyValidationManager">
2
- <state>
3
- <option name="SKIP_IMPORT_STATEMENTS" value="false" />
4
- </state>
5
- </component>
data/.idea/vcs.xml DELETED
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
- </component>
6
- </project>
7
-