lib/httpimagestore/configuration/identify.rb in httpimagestore-1.8.1 vs lib/httpimagestore/configuration/identify.rb in httpimagestore-1.9.0
- old
+ new
@@ -3,10 +3,15 @@
require 'httpimagestore/configuration/handler'
module Configuration
class Identify < HandlerStatement
include ClassLogging
+ include ImageName
+ include LocalConfiguration
+ include GlobalConfiguration
+ include ConditionalInclusion
+ include PerfStats
extend Stats
def_stats(
:total_identify_requests,
:total_identify_requests_bytes
@@ -16,22 +21,23 @@
node.name == 'identify'
end
def self.parse(configuration, node)
image_name = node.grab_values('image name').first
- if_image_name_on = node.grab_attributes('if-image-name-on').first
- matcher = InclusionMatcher.new(image_name, if_image_name_on) if if_image_name_on
+ conditions, remaining = *ConditionalInclusion.grab_conditions_with_remaining(node.attributes)
+ remaining.empty? or raise UnexpectedAttributesError.new(node, remaining)
- configuration.processors << self.new(configuration.global, image_name, matcher)
+ iden = self.new(configuration.global, image_name)
+ iden.with_conditions(conditions)
+
+ configuration.processors << iden
end
- include ImageName
- include ConditionalInclusion
-
- def initialize(global, image_name, matcher = nil)
- super(global, image_name, matcher)
+ def initialize(global, image_name)
+ with_global_configuration(global)
+ with_image_name(image_name)
end
def realize(request_state)
client = @global.thumbnailer or fail 'thumbnailer configuration'
image = request_state.images[@image_name]
@@ -39,10 +45,12 @@
log.info "identifying '#{@image_name}'"
Identify.stats.incr_total_identify_requests
Identify.stats.incr_total_identify_requests_bytes image.data.bytesize
- id = client.with_headers(request_state.headers).identify(image.data)
+ id = measure "identifying", @image_name do
+ client.with_headers(request_state.forward_headers).identify(image.data)
+ end
image.mime_type = id.mime_type if id.mime_type
image.width = id.width if id.width
image.height = id.height if id.height
log.info "image '#{@image_name}' identified as '#{id.mime_type}' #{image.width}x#{image.height}"