http-log-parser 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/Rakefile +10 -2
  2. data/lib/http/parser.rb +27 -19
  3. metadata +3 -3
data/Rakefile CHANGED
@@ -1,10 +1,11 @@
1
1
  require 'rubygems'
2
2
  require 'rake/gempackagetask'
3
3
  require 'rake/rdoctask'
4
+ require 'rake/testtask'
4
5
 
5
6
  spec = Gem::Specification.new do |s|
6
7
  s.name = "http-log-parser"
7
- s.version = "0.0.1"
8
+ s.version = "0.0.2"
8
9
  s.author = "Torsten Curdt"
9
10
  s.email = "tcurdt at vafer.org"
10
11
  s.homepage = "http://github.com/tcurdt/http-log-parser"
@@ -31,6 +32,13 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
31
32
  rdoc.rdoc_files.include('lib/**/*.rb')
32
33
  end
33
34
 
35
+ Rake::TestTask.new do |t|
36
+ t.libs << 'test'
37
+ t.test_files = FileList["test/**/*_test.rb"]
38
+ t.verbose = true
39
+ end
40
+
34
41
  task :default => "pkg/#{spec.name}-#{spec.version}.gem" do
35
42
  puts "generated latest version"
36
- end
43
+ end
44
+
@@ -56,35 +56,43 @@ class HttpLogParser
56
56
  :combined_with_cookies => '%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" \"%{Cookies}i\"'
57
57
  }
58
58
 
59
- attr_reader :known_formats
59
+ attr_reader :formats
60
60
 
61
- def initialize
62
- @log_format = []
63
- initialize_known_formats
64
- end
61
+ def initialize(formats = nil)
65
62
 
66
- def initialize_known_formats
67
- @known_formats = {}
68
- LOG_FORMATS.each do |name, format|
69
- @known_formats[name] = HttpLogFormat.new(name, format)
63
+ case formats
64
+ when String then
65
+ @formats = { :provided => formats }
66
+ when Hash then
67
+ @formats = formats
68
+ else
69
+ @formats = {}
70
+ LOG_FORMATS.each do |name, format|
71
+ @formats[name] = HttpLogFormat.new(name, format)
72
+ end
70
73
  end
74
+
71
75
  end
72
76
 
73
- def check_format(line)
74
- @known_formats.sort_by { |key, log_format| log_format.format_regex.source.size }.reverse.each { |key, log_format|
75
- return key if line.match(log_format.format_regex)
77
+ def format_from_line(line)
78
+ @formats.sort_by { |key, format| format.format_regex.source.size }.reverse.each { |key, format|
79
+ return @formats[key] if line.match(format.format_regex)
76
80
  }
77
- return :unknown
81
+ return nil
78
82
  end
79
83
 
80
84
  def parse_line(line)
81
- @format = check_format(line)
82
- log_format = @known_formats[@format]
83
- raise ArgumentError if log_format.nil? or line !~ log_format.format_regex
84
- data = line.scan(log_format.format_regex).flatten
85
+
86
+ if @format.nil?
87
+ @format = format_from_line(line)
88
+ end
89
+
90
+ raise ArgumentError if @format.nil? or line !~ @format.format_regex
91
+
92
+ data = line.scan(@format.format_regex).flatten
85
93
  parsed_data = {}
86
- log_format.format_symbols.size.times do |i|
87
- parsed_data[log_format.format_symbols[i]] = data[i]
94
+ @format.format_symbols.size.times do |i|
95
+ parsed_data[@format.format_symbols[i]] = data[i]
88
96
  end
89
97
 
90
98
  parsed_data[:datetime] = parsed_data[:datetime][1...-1] if parsed_data[:datetime]
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 1
9
- version: 0.0.1
8
+ - 2
9
+ version: 0.0.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Torsten Curdt
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-22 00:00:00 +02:00
17
+ date: 2010-04-23 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies: []
20
20