You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.3 KiB

require 'typhoeus'
module Carto
module Http
#Wraps a typhoeus request and logs it
class Request
# Used to avoid blocks to the default Typhoeus User-Agent
# http://www.ispcolohost.com/2015/08/05/amazon-ec2-ddos-from-typhoeus-user-agent/
DEFAULT_USER_AGENT = 'Mozilla/5.0 (CartoDB) Gecko/20100101 Firefox/40.0'
def initialize(logger, url, options = {})
@logger = logger
@options = options
set_user_agent
@typhoeus_request = Typhoeus::Request.new(url, options)
end
def run
response = @typhoeus_request.run
@logger.log(response)
response
end
def url
@typhoeus_request.url
end
def options
@typhoeus_request.options
end
def on_headers(&block)
@typhoeus_request.on_headers(&block)
end
def on_body(&block)
@typhoeus_request.on_body(&block)
end
def on_complete(&block)
@typhoeus_request.on_complete(&block)
end
def set_user_agent(user_agent = DEFAULT_USER_AGENT)
if @options.has_key?(:headers)
@options[:headers] = @options[:headers].merge({"User-Agent"=>user_agent})
else
@options = @options.merge({:headers => {"User-Agent"=>user_agent}})
end
end
end
end
end