httpimagestore 1.8.1 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
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źń