class ImageServer::Adapters::Http::ErrorHandler

Attributes

response[R]

Public Class Methods

new(http_response) click to toggle source
# File lib/image_server/adapters/http/error_handler.rb, line 7
def initialize(http_response)
  @response = http_response
end

Public Instance Methods

handle_errors!() click to toggle source
# File lib/image_server/adapters/http/error_handler.rb, line 11
def handle_errors!
  case response
    when Net::HTTPOK
    when Net::HTTPServiceUnavailable, Net::HTTPGatewayTimeOut
      raise ImageServerUnavailable
    when Net::HTTPNotFound
      error = JSON.parse(response.body)['error']
      if error.start_with?('Unable to download image') || error.start_with?('File is empty')
        raise SourceNotFound, error
      elsif error.end_with?('i/o timeout')
        raise Blocked, error
      elsif error.start_with?('ImageMagick failed')
        raise InvalidSource, error
      elsif error.include?('dial tcp')
        raise ConnectionFailure, error
      else
        # generic case, let's log the error so we can add it later
        # but we consider this a permanent error so tht we don't block processing.
        logger.error "error uploading, but error was not recognized: #{error.inspect}"
        raise UploadError, error
      end
    else
      raise UploadError, response
  end
end

Private Instance Methods

logger() click to toggle source
# File lib/image_server/adapters/http/error_handler.rb, line 39
def logger
  @@logger ||= ImageServer::Logger.new
end