http-log-parser 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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