Class: LogReplay::Request
- Inherits:
-
Object
- Object
- LogReplay::Request
- Defined in:
- lib/log_replay/request.rb
Constant Summary collapse
- METHOD =
/\[(GET|POST|PUT|DELETE)\]/- TIME =
/\s(\d\d\d\d\-\d\d\-\d\d\s\d\d\:\d\d\:\d\d)\)/- PARAMS =
/Parameters\:\s(.+)/- LOCATION =
/Location\:\s.+\/([a-f0-9]+)\r\n/- ERROR =
/.+Error\s\(/- IPV4 =
/\(for\s([0-9\.]+)\sat/- RESPONSE =
/\s\|\s(\d\d\d)\s(.+)\s\[(.+)\]/
Instance Attribute Summary collapse
-
#client_ip ⇒ Object
readonly
Returns the value of attribute client_ip.
-
#location ⇒ Object
readonly
Returns the value of attribute location.
-
#log_entry ⇒ Object
readonly
Returns the value of attribute log_entry.
-
#params ⇒ Object
readonly
Returns the value of attribute params.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
-
#request_id ⇒ Object
readonly
Returns the value of attribute request_id.
-
#status ⇒ Object
readonly
Returns the value of attribute status.
-
#time ⇒ Object
readonly
Returns the value of attribute time.
Class Method Summary collapse
- .each(logfile_path, &block) ⇒ Object
- .each_with_timing(logfile_path, &block) ⇒ Object
- .parse_request(request) ⇒ Object
- .resolve_params(params_hash) ⇒ Object
Instance Method Summary collapse
-
#initialize(options) ⇒ Request
constructor
A new instance of Request.
- #request_method ⇒ Object
Constructor Details
#initialize(options) ⇒ Request
Returns a new instance of Request.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/log_replay/request.rb', line 22 def initialize @log_entry = [:log_entry] @time = Time.parse( [:time] ) @method = [:method] @client_ip = [:client_ip] @status = [:status] @message = [:message] @url = [:url] @path = URI.parse( [:url] ).path @request_id = [:params].delete("id") rescue "" @params = [:params] @location = [:location] if @method == "PUT" && @params["upload[attachment]"] @params["upload[attachment]"] = File.open("file1.png") end end |
Instance Attribute Details
#client_ip ⇒ Object (readonly)
Returns the value of attribute client_ip.
10 11 12 |
# File 'lib/log_replay/request.rb', line 10 def client_ip @client_ip end |
#location ⇒ Object (readonly)
Returns the value of attribute location.
10 11 12 |
# File 'lib/log_replay/request.rb', line 10 def location @location end |
#log_entry ⇒ Object (readonly)
Returns the value of attribute log_entry.
10 11 12 |
# File 'lib/log_replay/request.rb', line 10 def log_entry @log_entry end |
#params ⇒ Object (readonly)
Returns the value of attribute params.
10 11 12 |
# File 'lib/log_replay/request.rb', line 10 def params @params end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
10 11 12 |
# File 'lib/log_replay/request.rb', line 10 def path @path end |
#request_id ⇒ Object (readonly)
Returns the value of attribute request_id.
10 11 12 |
# File 'lib/log_replay/request.rb', line 10 def request_id @request_id end |
#status ⇒ Object (readonly)
Returns the value of attribute status.
10 11 12 |
# File 'lib/log_replay/request.rb', line 10 def status @status end |
#time ⇒ Object (readonly)
Returns the value of attribute time.
10 11 12 |
# File 'lib/log_replay/request.rb', line 10 def time @time end |
Class Method Details
.each(logfile_path, &block) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/log_replay/request.rb', line 41 def self.each logfile_path, &block unless File.exist?(logfile_path) raise ArgumentError, "Logfile does not exist" end File.open( logfile_path, "r" ) do |file| file.each("\n\n") do |request| next unless = parse_request( request ) yield Request.new( ) end end end |
.each_with_timing(logfile_path, &block) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/log_replay/request.rb', line 57 def self.each_with_timing logfile_path, &block = nil each( logfile_path ) do |request| ||= request.time time_to_sleep = request.time - sleep time_to_sleep yield request = request.time end end |
.parse_request(request) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/log_replay/request.rb', line 72 def self.parse_request request begin request.gsub!(/\#\<File.+\>\}/, "\"fileupload\"}") request_params = {} request_params[:log_entry]= request request_params[:client_ip]= request.match(IPV4)[1] request_params[:time] = request.match(TIME)[1] request_params[:method] = request.match(METHOD)[1] params_hash = eval( (request.match(PARAMS)[1] rescue "") ) request_params[:params] = resolve_params( params_hash ) request_info = request.match(RESPONSE) request_params[:status] = request_info[1] request_params[:message] = request_info[2] request_params[:url] = request_info[3] if ( request_params[:method] == "POST" ) && ( request =~ /Redirected/ ) request_params[:location] = request.match(/Redirected\sto\s(.+)\n/)[1] end request_params rescue => exception puts exception nil end end |
.resolve_params(params_hash) ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/log_replay/request.rb', line 102 def self.resolve_params params_hash params_hash ||= {} params_hash.inject({}) do |, (key, value)| if value.is_a?(Hash) value.each do |k,v| ["#{key}[#{k}]"] = v end else [key] = value end end end |
Instance Method Details
#request_method ⇒ Object
119 120 121 |
# File 'lib/log_replay/request.rb', line 119 def request_method @method end |