class OpenRTB::Client

Attributes

logger[W]
max_concurrency[W]
proxy[RW]
user_agent[W]
version[W]

Public Class Methods

new() { |self| ... } click to toggle source
# File lib/openrtb/client.rb, line 58
def initialize
  yield(self) if block_given?
end

Public Instance Methods

execute(&block) click to toggle source
# File lib/openrtb/client.rb, line 78
def execute(&block)
  hydra = Typhoeus::Hydra.new(max_concurrency: max_concurrency)
  queue = Queue.new(self, hydra)
  block.call(queue)
  hydra.run

  handle_responses(queue.responses)
end
logger() click to toggle source
# File lib/openrtb/client.rb, line 62
def logger
  @logger ||= OpenRTB::NullObject.new
end
max_concurrency() click to toggle source
# File lib/openrtb/client.rb, line 66
def max_concurrency
  @max_concurrency ||= 2
end
user_agent() click to toggle source
# File lib/openrtb/client.rb, line 70
def user_agent
  @user_agent ||= "OpenRTB Ruby Client #{OpenRTB::VERSION}"
end
version() click to toggle source
# File lib/openrtb/client.rb, line 74
def version
  @version ||= '2.1'
end

Private Instance Methods

handle_responses(responses) click to toggle source
# File lib/openrtb/client.rb, line 89
def handle_responses(responses)
  result = []
  responses.each do |res|
    begin
      logger.debug({
        effective_url: res.effective_url,
        primary_ip: res.primary_ip,
        response_code: res.response_code,
        response_headers: res.response_headers,
        namelookup_time: res.namelookup_time,
        connect_time: res.connect_time,
        app_connect_time: res.app_connect_time,
        pretransfer_time: res.pretransfer_time,
        start_transfer_time: res.start_transfer_time,
        total_time: res.total_time,
        body: res.body})

      result.push OpenRTB::Response.new(MultiJson.load(res.body)) if res.success?
    rescue MultiJson::ParseError => e
      logger.error(e.cause)
    end
  end
  result
end