httpimagestore 1.8.1 → 1.9.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 (64) hide show
  1. checksums.yaml +15 -0
  2. data/Gemfile +7 -7
  3. data/Gemfile.lock +20 -20
  4. data/README.md +165 -37
  5. data/Rakefile +7 -2
  6. data/VERSION +1 -1
  7. data/bin/httpimagestore +74 -41
  8. data/lib/httpimagestore/configuration/file.rb +20 -11
  9. data/lib/httpimagestore/configuration/handler.rb +96 -257
  10. data/lib/httpimagestore/configuration/handler/source_store_base.rb +37 -0
  11. data/lib/httpimagestore/configuration/handler/statement.rb +114 -0
  12. data/lib/httpimagestore/configuration/identify.rb +17 -9
  13. data/lib/httpimagestore/configuration/output.rb +33 -61
  14. data/lib/httpimagestore/configuration/path.rb +2 -2
  15. data/lib/httpimagestore/configuration/request_state.rb +131 -0
  16. data/lib/httpimagestore/configuration/s3.rb +41 -29
  17. data/lib/httpimagestore/configuration/thumbnailer.rb +189 -96
  18. data/lib/httpimagestore/configuration/validate_hmac.rb +170 -0
  19. data/lib/httpimagestore/error_reporter.rb +6 -1
  20. data/lib/httpimagestore/ruby_string_template.rb +10 -19
  21. metadata +40 -102
  22. data/.rspec +0 -1
  23. data/features/cache-control.feature +0 -41
  24. data/features/compatibility.feature +0 -165
  25. data/features/data-uri.feature +0 -55
  26. data/features/encoding.feature +0 -103
  27. data/features/error-reporting.feature +0 -281
  28. data/features/flexi.feature +0 -259
  29. data/features/health-check.feature +0 -29
  30. data/features/request-matching.feature +0 -211
  31. data/features/rewrite.feature +0 -122
  32. data/features/s3-store-and-thumbnail.feature +0 -82
  33. data/features/source-failover.feature +0 -71
  34. data/features/step_definitions/httpimagestore_steps.rb +0 -203
  35. data/features/storage.feature +0 -198
  36. data/features/support/env.rb +0 -116
  37. data/features/support/test-large.jpg +0 -0
  38. data/features/support/test.empty +0 -0
  39. data/features/support/test.jpg +0 -0
  40. data/features/support/test.png +0 -0
  41. data/features/support/test.txt +0 -1
  42. data/features/support/tiny.png +0 -0
  43. data/features/xid-forwarding.feature +0 -49
  44. data/httpimagestore.gemspec +0 -145
  45. data/load_test/load_test.1k.23a022f6e.m1.small-comp.csv +0 -3
  46. data/load_test/load_test.1k.ec9bde794.m1.small.csv +0 -4
  47. data/load_test/load_test.jmx +0 -317
  48. data/load_test/thumbnail_specs.csv +0 -11
  49. data/load_test/thumbnail_specs_v2.csv +0 -10
  50. data/spec/configuration_file_spec.rb +0 -333
  51. data/spec/configuration_handler_spec.rb +0 -255
  52. data/spec/configuration_identify_spec.rb +0 -67
  53. data/spec/configuration_output_spec.rb +0 -821
  54. data/spec/configuration_path_spec.rb +0 -138
  55. data/spec/configuration_s3_spec.rb +0 -911
  56. data/spec/configuration_source_failover_spec.rb +0 -101
  57. data/spec/configuration_spec.rb +0 -90
  58. data/spec/configuration_thumbnailer_spec.rb +0 -483
  59. data/spec/ruby_string_template_spec.rb +0 -61
  60. data/spec/spec_helper.rb +0 -89
  61. data/spec/support/compute.jpg +0 -0
  62. data/spec/support/cuba_response_env.rb +0 -40
  63. data/spec/support/full.cfg +0 -183
  64. data/spec/support/utf_string.txt +0 -1
@@ -1,61 +0,0 @@
1
- require_relative 'spec_helper'
2
- require 'httpimagestore/ruby_string_template'
3
-
4
- describe RubyStringTemplate do
5
- subject do
6
- RubyStringTemplate.new('>#{hello}-#{world}#{test}<')
7
- end
8
-
9
- it 'should replace holders with given values' do
10
- subject.render(hello: 'hello', world: 'world', test: 123).should == '>hello-world123<'
11
- end
12
-
13
- it 'should raise NoValueForTemplatePlaceholderError if template value was not provided' do
14
- expect {
15
- subject.render(hello: 'hello', test: 123)
16
- }.to raise_error RubyStringTemplate::NoValueForTemplatePlaceholderError, %q{no value for '#{world}' in template '>#{hello}-#{world}#{test}<'}
17
- end
18
-
19
- it 'should not process nested placeholders' do
20
- subject.render(hello: '#{nested}', world: 'world', test: 123, nested: 'xxx').should == '>#{nested}-world123<'
21
- end
22
-
23
- describe 'with custom resolver' do
24
- subject do
25
- RubyStringTemplate.new('>#{hello}-#{world}#{test}<') do |locals, name|
26
- case name
27
- when :test
28
- 321
29
- else
30
- locals[name]
31
- end
32
- end
33
- end
34
-
35
- it 'should ask for values using provided resolver' do
36
- subject.render(hello: 'hello', world: 'world').should == '>hello-world321<'
37
- subject.render(hello: 'hello', world: 'world', test: 123).should == '>hello-world321<'
38
- end
39
-
40
- it 'should raise NoValueForTemplatePlaceholderError if template value was not provided' do
41
- expect {
42
- subject.render(hello: 'hello', test: 123)
43
- }.to raise_error RubyStringTemplate::NoValueForTemplatePlaceholderError, %q{no value for '#{world}' in template '>#{hello}-#{world}#{test}<'}
44
- end
45
-
46
- it 'should allow using custom missing value resolver' do
47
- template = subject
48
- expect {
49
- template.with_missing_resolver do |locals, key|
50
- fail "missing key: #{key}"
51
- end
52
- .render(hello: 'hello', test: 123)
53
- }.to raise_error RuntimeError, "missing key: world"
54
-
55
- expect {
56
- template.render(hello: 'hello', test: 123)
57
- }.to raise_error RubyStringTemplate::NoValueForTemplatePlaceholderError, %q{no value for '#{world}' in template '>#{hello}-#{world}#{test}<'}
58
- end
59
- end
60
- end
61
-
@@ -1,89 +0,0 @@
1
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
- $LOAD_PATH.unshift(File.dirname(__FILE__))
3
- require 'rspec'
4
- require 'faraday'
5
- require 'daemon'
6
-
7
- # Requires supporting files with custom matchers and macros, etc,
8
- # in ./support/ and its subdirectories.
9
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
10
-
11
- RSpec.configure do |config|
12
-
13
- end
14
-
15
- def support_dir
16
- Pathname.new('spec/support')
17
- end
18
-
19
- def http_client
20
- @faraday ||= Faraday.new
21
- end
22
-
23
- def request(method, uri, body, headers)
24
- http_client.run_request(method.downcase.to_sym, uri.replace_s3_variables, body, headers || {})
25
- end
26
-
27
- def get(url)
28
- http_client.get(url).body
29
- end
30
-
31
- def status(url)
32
- http_client.get(url).status
33
- end
34
-
35
- def headers(url)
36
- http_client.get(url).headers
37
- end
38
-
39
- @@running_cmd = {}
40
- def start_server(cmd, pid_file, log_file, test_url)
41
- if @@running_cmd[pid_file]
42
- return if @@running_cmd[pid_file] == cmd
43
- stop_server(pid_file)
44
- end
45
-
46
- fork do
47
- Daemon.daemonize(pid_file, log_file)
48
- log_file = Pathname.new(log_file)
49
- log_file.truncate(0) if log_file.exist?
50
- exec(cmd)
51
- end
52
-
53
- @@running_cmd[pid_file] = cmd
54
-
55
- ppid = Process.pid
56
- at_exit do
57
- stop_server(pid_file) if Process.pid == ppid
58
- end
59
-
60
- Timeout.timeout(10) do
61
- begin
62
- get test_url
63
- rescue Faraday::Error::ConnectionFailed
64
- sleep 0.1
65
- retry
66
- end
67
- end
68
- end
69
-
70
- def stop_server(pid_file)
71
- pid_file = Pathname.new(pid_file)
72
- return unless pid_file.exist?
73
-
74
- STDERR.puts http_client.get_content("http://localhost:3000/stats") if pid_file.to_s.include? 'httpimagestore'
75
- pid = pid_file.read.strip.to_i
76
-
77
- Timeout.timeout(20) do
78
- begin
79
- loop do
80
- Process.kill("TERM", pid)
81
- sleep 0.1
82
- end
83
- rescue Errno::ESRCH
84
- @@running_cmd.delete pid_file.to_s
85
- pid_file.unlink
86
- end
87
- end
88
- end
89
-
Binary file
@@ -1,40 +0,0 @@
1
- require 'unicorn-cuba-base/plugin/response_helpers'
2
- class CubaResponseEnv
3
- include Plugin::ResponseHelpers
4
-
5
- class Response < Struct.new(:status, :data)
6
- extend Forwardable
7
-
8
- def initialize
9
- super
10
- @headers = {}
11
- end
12
-
13
- def write(data)
14
- (self.data ||= '') << data
15
- end
16
-
17
- def_delegators :@headers, :[]=, :[]
18
- end
19
-
20
- class Request
21
- class Body
22
- def read
23
- ''
24
- end
25
- end
26
-
27
- def body
28
- Body.new
29
- end
30
- end
31
-
32
- def initialize
33
- @res = Response.new
34
- @req = Request.new
35
- end
36
-
37
- attr_reader :res
38
- attr_reader :req
39
- end
40
-
@@ -1,183 +0,0 @@
1
- s3 key="AKIAJ672BX2L6KYBFWSQ" secret="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" ssl=false
2
-
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"
58
- }
59
-
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
- }
65
-
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
- }
72
-
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"
77
- }
78
-
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
- }
84
-
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
- }
91
-
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"
103
- }
104
-
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
- }
117
-
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
- }
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"
181
- output_image "thumbnail" cache-control="public, max-age=31557600, s-maxage=0"
182
- }
183
-
@@ -1 +0,0 @@
1
- zażółć gęślą jaźń