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}"