class Rreplay::Http

Constants

Result

Public Class Methods

new(endpoint) click to toggle source
# File lib/rreplay/replay_runner.rb, line 123
def initialize(endpoint)
  @endpoint = endpoint
end

Public Instance Methods

call(orig_request) click to toggle source
# File lib/rreplay/replay_runner.rb, line 127
def call(orig_request)
  uri = URI(::File.join(@endpoint, orig_request['path'], orig_request['query_strings']))
  body = orig_request['body']
  headers = orig_request['headers']
  headers.merge!({ 'User-Agent': 'RreplayRunner' })

  request_clazz = case orig_request['method'].upcase
                  when 'GET'
                    Net::HTTP::Get
                  when 'POST'
                    Net::HTTP::Post
                  when 'PUT'
                    Net::HTTP::Put
                  when 'PATCH'
                    Net::HTTP::Patch
                  when 'DELETE'
                    Net::HTTP::Delete
                  else
                    # ignore
                    return
                  end
  request = request_clazz.new(uri, headers).tap do |req|
    req.body = body
  end

  start_time = Time.now
  response = Net::HTTP.start(uri.hostname, uri.port,
                             :use_ssl => uri.scheme == 'https') { |http|
    http.request(request)
  }
  Result.new(response, (Time.now - start_time).to_s)
end