server_log_parser 0.4.0 → 0.4.1
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.
- checksums.yaml +4 -4
 - data/Rakefile +1 -1
 - data/lib/server_log_parser/parser.rb +4 -9
 - data/lib/server_log_parser/version.rb +1 -1
 - data/test/fixtures/{line-with-slash-quote-in-referer.log → line_with_slash_quote_in_referer.log} +0 -0
 - data/test/fixtures/{line-with-slash-quote-in-request.log → line_with_slash_quote_in_request.log} +0 -0
 - data/test/fixtures/line_with_slash_quote_in_user-agent.log +1 -0
 - data/test/{parser_test.rb → server_log_parser/parser_test.rb} +23 -7
 - metadata +10 -8
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: d3822fbfb155d2237d6637152c03a9447a426f6c
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 80160b6064711a43c94bfe5a367dcabf03f8d533
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 746b9986ac7183eb3397aff0b28e90a1c82cbb387c3116d3937219acdc1c5b030af62384a13407e19f0f7bad48c5e6480ecd48f34544e99ba2d0abd74dde894f
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 1a8a50ebb3ed4750d1580bf604f12af65a2871e3b577b159d10912d046f40ed259cc66a1b141bf4e166b6ba1413c6f51b0c6a595769d8e4493d0ec2eb547a85b
         
     | 
    
        data/Rakefile
    CHANGED
    
    
| 
         @@ -91,25 +91,20 @@ module ServerLogParser 
     | 
|
| 
       91 
91 
     | 
    
         
             
                    format.strip!                # remove leading and trailing space
         
     | 
| 
       92 
92 
     | 
    
         
             
                    format.gsub!(/[ \t]+/, ' ')  # replace tabulations or spaces with a space
         
     | 
| 
       93 
93 
     | 
    
         | 
| 
       94 
     | 
    
         
            -
                    strip_quotes = proc { |string| string.gsub(/^\\"/, '').gsub(/\\"$/, '') }
         
     | 
| 
       95 
     | 
    
         
            -
                    find_quotes  = proc { |string| string =~ /^\\"/ }
         
     | 
| 
       96 
     | 
    
         
            -
                    find_percent = proc { |string| string =~ /^%.*t$/ }
         
     | 
| 
       97 
     | 
    
         
            -
                    find_referrer_or_useragent = proc { |string| string =~ /Referer|User-Agent/ }
         
     | 
| 
       98 
     | 
    
         
            -
             
     | 
| 
       99 
94 
     | 
    
         
             
                    pattern = format.split(' ').map do |element|
         
     | 
| 
       100 
     | 
    
         
            -
                      has_quotes =  
     | 
| 
       101 
     | 
    
         
            -
                      element =  
     | 
| 
      
 95 
     | 
    
         
            +
                      has_quotes = element =~ /^\\"/
         
     | 
| 
      
 96 
     | 
    
         
            +
                      element = element.gsub(/^\\"/, '').gsub(/\\"$/, '') if has_quotes
         
     | 
| 
       102 
97 
     | 
    
         | 
| 
       103 
98 
     | 
    
         
             
                      self.names << rename_this_name(element)
         
     | 
| 
       104 
99 
     | 
    
         | 
| 
       105 
100 
     | 
    
         
             
                      case
         
     | 
| 
       106 
101 
     | 
    
         
             
                        when has_quotes
         
     | 
| 
       107 
     | 
    
         
            -
                          if element == '%r'  
     | 
| 
      
 102 
     | 
    
         
            +
                          if element == '%r' || element =~ /^%{Referer}/ || element =~ /^%{User-agent}/
         
     | 
| 
       108 
103 
     | 
    
         
             
                            /"([^"\\]*(?:\\.[^"\\]*)*)"/
         
     | 
| 
       109 
104 
     | 
    
         
             
                          else
         
     | 
| 
       110 
105 
     | 
    
         
             
                            '\"([^\"]*)\"'
         
     | 
| 
       111 
106 
     | 
    
         
             
                          end
         
     | 
| 
       112 
     | 
    
         
            -
                        when  
     | 
| 
      
 107 
     | 
    
         
            +
                        when element =~ /^%.*t$/
         
     | 
| 
       113 
108 
     | 
    
         
             
                            '(\[[^\]]+\])'
         
     | 
| 
       114 
109 
     | 
    
         
             
                        when element == '%U'
         
     | 
| 
       115 
110 
     | 
    
         
             
                            '(.+?)'
         
     | 
    
        data/test/fixtures/{line-with-slash-quote-in-referer.log → line_with_slash_quote_in_referer.log}
    RENAMED
    
    | 
         
            File without changes
         
     | 
    
        data/test/fixtures/{line-with-slash-quote-in-request.log → line_with_slash_quote_in_request.log}
    RENAMED
    
    | 
         
            File without changes
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            212.74.15.68 - - [23/Jan/2004:11:36:20 +0000] "GET /images/previous.png HTTP/1.1" 200 2607 "http://peterhi.dyndns.org/bandwidth/index.html" "Mozilla/5.0 (X11; U; Linux \"Superman\\Superwoman\" i686; en-US; rv:1.2) Gecko/20021202"
         
     | 
| 
         @@ -13,7 +13,7 @@ describe ServerLogParser::Parser do 
     | 
|
| 
       13 
13 
     | 
    
         
             
              end
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
              before do
         
     | 
| 
       16 
     | 
    
         
            -
                @format = '%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User- 
     | 
| 
      
 16 
     | 
    
         
            +
                @format = '%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"'
         
     | 
| 
       17 
17 
     | 
    
         
             
                @parser = ServerLogParser::Parser.new(@format)
         
     | 
| 
       18 
18 
     | 
    
         
             
              end
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
         @@ -28,7 +28,7 @@ describe ServerLogParser::Parser do 
     | 
|
| 
       28 
28 
     | 
    
         
             
                               '%>s' => '200',
         
     | 
| 
       29 
29 
     | 
    
         
             
                               '%b'  => '2607',
         
     | 
| 
       30 
30 
     | 
    
         
             
                               '%{Referer}i'     => 'http://peterhi.dyndns.org/bandwidth/index.html',
         
     | 
| 
       31 
     | 
    
         
            -
                               '%{User- 
     | 
| 
      
 31 
     | 
    
         
            +
                               '%{User-agent}i'  => 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202' }
         
     | 
| 
       32 
32 
     | 
    
         
             
                  results = @parser.parse(read_testcase('line.log'))
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
                  assert_kind_of(Hash, results)
         
     | 
| 
         @@ -44,8 +44,24 @@ describe ServerLogParser::Parser do 
     | 
|
| 
       44 
44 
     | 
    
         
             
                               '%>s' => '200',
         
     | 
| 
       45 
45 
     | 
    
         
             
                               '%b'  => '2607',
         
     | 
| 
       46 
46 
     | 
    
         
             
                               '%{Referer}i'     => 'http://peterhi.dyndns.org/bandwidth/index.html',
         
     | 
| 
       47 
     | 
    
         
            -
                               '%{User- 
     | 
| 
       48 
     | 
    
         
            -
                  results = @parser.parse(read_testcase(' 
     | 
| 
      
 47 
     | 
    
         
            +
                               '%{User-agent}i'  => 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202' }
         
     | 
| 
      
 48 
     | 
    
         
            +
                  results = @parser.parse(read_testcase('line_with_slash_quote_in_request.log'))
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                  assert_kind_of(Hash, results)
         
     | 
| 
      
 51 
     | 
    
         
            +
                  assert_match_expected_hash(expected, results)
         
     | 
| 
      
 52 
     | 
    
         
            +
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                it "should parse line with slash quote in user agent" do
         
     | 
| 
      
 55 
     | 
    
         
            +
                  expected = { '%h'  => '212.74.15.68',
         
     | 
| 
      
 56 
     | 
    
         
            +
                               '%l'  => '-',
         
     | 
| 
      
 57 
     | 
    
         
            +
                               '%u'  => '-',
         
     | 
| 
      
 58 
     | 
    
         
            +
                               '%t'  => '[23/Jan/2004:11:36:20 +0000]',
         
     | 
| 
      
 59 
     | 
    
         
            +
                               '%r'  => 'GET /images/previous.png HTTP/1.1',
         
     | 
| 
      
 60 
     | 
    
         
            +
                               '%>s' => '200',
         
     | 
| 
      
 61 
     | 
    
         
            +
                               '%b'  => '2607',
         
     | 
| 
      
 62 
     | 
    
         
            +
                               '%{Referer}i'     => 'http://peterhi.dyndns.org/bandwidth/index.html',
         
     | 
| 
      
 63 
     | 
    
         
            +
                               '%{User-agent}i'  => 'Mozilla/5.0 (X11; U; Linux \\"Superman\\\\Superwoman\\" i686; en-US; rv:1.2) Gecko/20021202' }
         
     | 
| 
      
 64 
     | 
    
         
            +
                  results = @parser.parse(read_testcase('line_with_slash_quote_in_user-agent.log'))
         
     | 
| 
       49 
65 
     | 
    
         | 
| 
       50 
66 
     | 
    
         
             
                  assert_kind_of(Hash, results)
         
     | 
| 
       51 
67 
     | 
    
         
             
                  assert_match_expected_hash(expected, results)
         
     | 
| 
         @@ -60,8 +76,8 @@ describe ServerLogParser::Parser do 
     | 
|
| 
       60 
76 
     | 
    
         
             
                               '%>s' => '200',
         
     | 
| 
       61 
77 
     | 
    
         
             
                               '%b'  => '2888',
         
     | 
| 
       62 
78 
     | 
    
         
             
                               '%{Referer}i'     => 'http://search.yahoo.com/bin/search?p=\"grady%20white%20306%20bimini\"',
         
     | 
| 
       63 
     | 
    
         
            -
                               '%{User- 
     | 
| 
       64 
     | 
    
         
            -
                  results = @parser.parse(read_testcase(' 
     | 
| 
      
 79 
     | 
    
         
            +
                               '%{User-agent}i'  => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; YPC 3.0.3; yplus 4.0.00d)' }
         
     | 
| 
      
 80 
     | 
    
         
            +
                  results = @parser.parse(read_testcase('line_with_slash_quote_in_referer.log'))
         
     | 
| 
       65 
81 
     | 
    
         | 
| 
       66 
82 
     | 
    
         
             
                  assert_kind_of(Hash, results)
         
     | 
| 
       67 
83 
     | 
    
         
             
                  assert_match_expected_hash(expected, results)
         
     | 
| 
         @@ -104,7 +120,7 @@ describe ServerLogParser::Parser do 
     | 
|
| 
       104 
120 
     | 
    
         
             
                               '%>s' => 200,
         
     | 
| 
       105 
121 
     | 
    
         
             
                               '%b'  => 2607,
         
     | 
| 
       106 
122 
     | 
    
         
             
                               '%{Referer}i'     => 'http://peterhi.dyndns.org/bandwidth/index.html',
         
     | 
| 
       107 
     | 
    
         
            -
                               '%{User- 
     | 
| 
      
 123 
     | 
    
         
            +
                               '%{User-agent}i'  => 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202' }
         
     | 
| 
       108 
124 
     | 
    
         
             
                  results = @parser.handle(read_testcase('line.log'))
         
     | 
| 
       109 
125 
     | 
    
         | 
| 
       110 
126 
     | 
    
         
             
                  assert_kind_of(Hash, results)
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: server_log_parser
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.4. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.4.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Alexander Kurakin
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2016- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2016-04-06 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: bundler
         
     | 
| 
         @@ -71,10 +71,11 @@ files: 
     | 
|
| 
       71 
71 
     | 
    
         
             
            - lib/server_log_parser/parser.rb
         
     | 
| 
       72 
72 
     | 
    
         
             
            - lib/server_log_parser/version.rb
         
     | 
| 
       73 
73 
     | 
    
         
             
            - server_log_parser.gemspec
         
     | 
| 
       74 
     | 
    
         
            -
            - test/fixtures/line-with-slash-quote-in-referer.log
         
     | 
| 
       75 
     | 
    
         
            -
            - test/fixtures/line-with-slash-quote-in-request.log
         
     | 
| 
       76 
74 
     | 
    
         
             
            - test/fixtures/line.log
         
     | 
| 
       77 
     | 
    
         
            -
            - test/ 
     | 
| 
      
 75 
     | 
    
         
            +
            - test/fixtures/line_with_slash_quote_in_referer.log
         
     | 
| 
      
 76 
     | 
    
         
            +
            - test/fixtures/line_with_slash_quote_in_request.log
         
     | 
| 
      
 77 
     | 
    
         
            +
            - test/fixtures/line_with_slash_quote_in_user-agent.log
         
     | 
| 
      
 78 
     | 
    
         
            +
            - test/server_log_parser/parser_test.rb
         
     | 
| 
       78 
79 
     | 
    
         
             
            - test/server_log_parser_test.rb
         
     | 
| 
       79 
80 
     | 
    
         
             
            - test/test_helper.rb
         
     | 
| 
       80 
81 
     | 
    
         
             
            homepage: https://github.com/kuraga/server_log_parser
         
     | 
| 
         @@ -102,9 +103,10 @@ signing_key: 
     | 
|
| 
       102 
103 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       103 
104 
     | 
    
         
             
            summary: Ruby library to parse Apache server log files using regular expressions.
         
     | 
| 
       104 
105 
     | 
    
         
             
            test_files:
         
     | 
| 
       105 
     | 
    
         
            -
            - test/fixtures/line-with-slash-quote-in-referer.log
         
     | 
| 
       106 
     | 
    
         
            -
            - test/fixtures/line-with-slash-quote-in-request.log
         
     | 
| 
       107 
106 
     | 
    
         
             
            - test/fixtures/line.log
         
     | 
| 
       108 
     | 
    
         
            -
            - test/ 
     | 
| 
      
 107 
     | 
    
         
            +
            - test/fixtures/line_with_slash_quote_in_referer.log
         
     | 
| 
      
 108 
     | 
    
         
            +
            - test/fixtures/line_with_slash_quote_in_request.log
         
     | 
| 
      
 109 
     | 
    
         
            +
            - test/fixtures/line_with_slash_quote_in_user-agent.log
         
     | 
| 
      
 110 
     | 
    
         
            +
            - test/server_log_parser/parser_test.rb
         
     | 
| 
       109 
111 
     | 
    
         
             
            - test/server_log_parser_test.rb
         
     | 
| 
       110 
112 
     | 
    
         
             
            - test/test_helper.rb
         
     |