class Playback::Request
Constants
- DEFAULT_CONTENT_TYPE
- DEFAULT_USER_AGENT
- PARSER
- REQUEST_WITHOUT_BODY
- REQUEST_WITH_BODY
Public Class Methods
new(base_uri)
click to toggle source
# File lib/playback/request.rb, line 15 def initialize(base_uri) @base_uri = base_uri @common_parser = PARSER.new('common') @combined_parser = PARSER.new('combined') end
Public Instance Methods
run(line, return_type='')
click to toggle source
# File lib/playback/request.rb, line 21 def run(line, return_type='') parsed_line = parse_log(line) method = parsed_line[:request][:method] path = parsed_line[:request][:path] referer = parsed_line[:referer] ||= '' user_agent = parsed_line[:user_agent] ||= DEFAULT_USER_AGENT response = request(method, path, referer, user_agent) return response if return_type == 'net-http' {method: method, path: path, status: response.code.to_i}.to_json rescue => e e.message end
Private Instance Methods
parse_log(line)
click to toggle source
# File lib/playback/request.rb, line 40 def parse_log(line) begin @combined_parser.parse(line.chomp) rescue @common_parser.parse(line.chomp) end end
request(method, path, referer, user_agent)
click to toggle source
# File lib/playback/request.rb, line 48 def request(method, path, referer, user_agent) uri = URI.parse("#{@base_uri}#{path}") http = Net::HTTP.new(uri.host, uri.port) header = {'Content-Type' => DEFAULT_CONTENT_TYPE, 'Referer' => referer, 'User-Agent' => user_agent} if REQUEST_WITHOUT_BODY.include?(method) http.send(method.downcase, path, header) elsif REQUEST_WITH_BODY.include?(method) http.send(method.downcase, uri.path, uri.query, header) else raise "it is not supported http method: <#{method}>" end end