httpimagestore 1.6.0 → 1.7.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 +4 -3
- data/Gemfile.lock +12 -16
- data/README.md +73 -0
- data/VERSION +1 -1
- data/bin/httpimagestore +7 -7
- data/features/data-uri.feature +55 -0
- data/features/error-reporting.feature +21 -3
- data/features/source-failover.feature +71 -0
- data/features/step_definitions/httpimagestore_steps.rb +27 -12
- data/features/storage.feature +26 -25
- data/features/support/tiny.png +0 -0
- data/features/xid-forwarding.feature +49 -0
- data/httpimagestore.gemspec +19 -23
- data/lib/httpimagestore/configuration/file.rb +6 -0
- data/lib/httpimagestore/configuration/handler.rb +4 -1
- data/lib/httpimagestore/configuration/identify.rb +2 -2
- data/lib/httpimagestore/configuration/output.rb +20 -1
- data/lib/httpimagestore/configuration/s3.rb +15 -9
- data/lib/httpimagestore/configuration/source_failover.rb +51 -0
- data/lib/httpimagestore/configuration/thumbnailer.rb +7 -7
- data/lib/httpimagestore/error_reporter.rb +9 -1
- data/lib/httpimagestore/ruby_string_template.rb +12 -7
- data/load_test/load_test.jmx +50 -77
- data/load_test/thumbnail_specs_v2.csv +10 -0
- data/spec/configuration_file_spec.rb +27 -2
- data/spec/configuration_identify_spec.rb +25 -2
- data/spec/configuration_s3_spec.rb +29 -3
- data/spec/configuration_source_failover_spec.rb +101 -0
- data/spec/configuration_thumbnailer_spec.rb +63 -8
- data/spec/ruby_string_template_spec.rb +4 -0
- data/spec/support/full.cfg +167 -33
- metadata +19 -23
- data/.idea/.name +0 -1
- data/.idea/.rakeTasks +0 -7
- data/.idea/codeStyleSettings.xml +0 -13
- data/.idea/dictionaries/wcc.xml +0 -8
- data/.idea/encodings.xml +0 -5
- data/.idea/httpimagestore.iml +0 -69
- data/.idea/jenkinsSettings.xml +0 -9
- data/.idea/misc.xml +0 -5
- data/.idea/modules.xml +0 -9
- data/.idea/scopes/scope_settings.xml +0 -5
- data/.idea/vcs.xml +0 -7
data/spec/support/full.cfg
CHANGED
|
@@ -1,49 +1,183 @@
|
|
|
1
|
-
s3 key="
|
|
1
|
+
s3 key="AKIAJ672BX2L6KYBFWSQ" secret="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" ssl=false
|
|
2
2
|
|
|
3
|
-
path
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 "
|
|
41
|
-
source_s3 "original" bucket="
|
|
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
|
-
|
|
44
|
-
|
|
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.
|
|
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:
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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:
|
|
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:
|
|
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:
|
|
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.
|
|
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>
|
data/.idea/codeStyleSettings.xml
DELETED
|
@@ -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
|
-
|
data/.idea/dictionaries/wcc.xml
DELETED
data/.idea/encodings.xml
DELETED
data/.idea/httpimagestore.iml
DELETED
|
@@ -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
|
-
|
data/.idea/jenkinsSettings.xml
DELETED
data/.idea/misc.xml
DELETED
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
|
-
|