sms-logparser 0.15.4 → 0.15.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f6f291bf3366c86a9e0467f9fa4a750c215944b1
4
- data.tar.gz: 1e3c5b90c12139143c20c97dfe86c31c0166007f
3
+ metadata.gz: 3bc6a6c493db206f9b0e26204b31abd83ab8b9fe
4
+ data.tar.gz: 39672cbbd824b8132d253343add492c2c11ae753
5
5
  SHA512:
6
- metadata.gz: 47d51297d129e36460d9d9cd8f9a8b868cc7a1b6ca1c2abd68a5e9cef408cb1dc4501f5a4d25aef186594fb9537f9fae338b4e25054f9f5a7140ddab16384781
7
- data.tar.gz: 8590d8eca2c7e2385d58927bb6b23ad1b1cb8a5fbc7bb7dd504380a9f06efe7e65126da233cb79fbcc514ace201c75b180720dbb7bf8b58f3630bd219bc91a0e
6
+ metadata.gz: 1f6a85ed18dec43437b4a2a46014150b6101004d7f3f3ec51df8fc00303b5483171acd6d2fbf50c892d6018cbe825a823ae199920441e3f3954628b6951f8a16
7
+ data.tar.gz: f2aa9eb052adde2c6af76ef2da369e646cb176d513cf635d2ab4ec3ac335daf9bc415bb51a777081d9fce77608b6a7f012e94561d77e2a17368157d90c34b447
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # SMS Logparser
2
2
 
3
- sms-logparser - Logparser for Simplex Media Server (SMS). Reads access logs stored in a MySQL database (coming from the SWISS TXT CDN) and sends them to the SMS API.
3
+ sms-logparser - Logparser for Simplex Media Server (SMS). Reads access logs stored in a MySQL database (coming from the SWISS TXT CDN) accumulates and sends them to the SMS API.
4
4
 
5
5
  [![Gem Version](https://badge.fury.io/rb/sms-logparser.png)](http://badge.fury.io/rb/sms-logparser)
6
6
 
@@ -23,7 +23,7 @@ $ sms-logparser setup
23
23
  Make a test run:
24
24
 
25
25
  ```bash
26
- $ sms-logparser parse --simulate --verbose
26
+ $ sms-logparser parse --simulate
27
27
  ```
28
28
 
29
29
  ## Usage
@@ -29,11 +29,10 @@ module SmsLogparser
29
29
  option :api_key, aliases: %w(-k), desc: "SMS API Key"
30
30
  option :simulate, type: :boolean, aliases: %w(-s),
31
31
  desc: "Dry run without submitting any data"
32
- option :verbose, type: :boolean, aliases: %w(-v), desc: "Verbose output"
33
32
  option :limit, type: :numeric, aliases: %w(-L), desc: "Limit the number of entries to query"
34
33
  option :accepted_api_responses, type: :array, aliases: %w(-r),
35
34
  desc: "API HTTP responses which are accepted (Default: only accept 200)"
36
- option :accumulate, type: :boolean, aliases: %w(-A),
35
+ option :accumulate, type: :boolean, aliases: %w(-A), default: true,
37
36
  desc: "Accumulate and cache results and send totals"
38
37
  option :concurrency, type: :numeric, default: 4, aliases: %w(-C),
39
38
  desc: "How many threads to use in parallel when sending cached results"
@@ -4,32 +4,36 @@ module SmsLogparser
4
4
  @message = message
5
5
  end
6
6
 
7
+ def match
8
+ @match ||= @message.match /\/content\/(\d+)\/(\d+)\/+(\d+)\/(\w+\.\w+)*(\?\S*)*\s.*\"\s(\d+)\s(\d+).+"(.*)"$/
9
+ end
10
+
7
11
  def customer_id
8
- match[1]
12
+ match[1] if match
9
13
  end
10
14
 
11
15
  def author_id
12
- match[2]
16
+ match[2] if match
13
17
  end
14
18
 
15
19
  def project_id
16
- match[3]
20
+ match[3] if match
17
21
  end
18
22
 
19
23
  def file
20
- match[4]
24
+ match[4] if match
21
25
  end
22
26
 
23
27
  def args
24
- match[5][1..-1] if match[5]
28
+ match[5][1..-1] if match && match[5]
25
29
  end
26
30
 
27
31
  def status
28
- match[6].to_i
32
+ match[6].to_i if match
29
33
  end
30
34
 
31
35
  def bytes
32
- match[7].to_i
36
+ match[7].to_i if match
33
37
  end
34
38
 
35
39
  def file_extname
@@ -37,7 +41,7 @@ module SmsLogparser
37
41
  end
38
42
 
39
43
  def user_agent
40
- match[8]
44
+ match[8] if match
41
45
  end
42
46
 
43
47
  def account_info
@@ -61,11 +65,5 @@ module SmsLogparser
61
65
  def to_h
62
66
  account_info.merge(transfer_info)
63
67
  end
64
-
65
- private
66
-
67
- def match
68
- @match ||= @message.match /\/content\/(\d+)\/(\d+)\/(\d+)\/(\w+\.\w+)*(\?\S*)*\s.*\"\s(\d+)\s(\d+).+"(.*)"$/
69
- end
70
68
  end
71
69
  end
@@ -11,18 +11,22 @@ module SmsLogparser
11
11
  if Parser.match?(message)
12
12
  @logger.debug { "Parser MATCH: #{message}" }
13
13
  log_message = LogMessage.new(message)
14
- type = Parser.get_type(log_message.user_agent)
15
- data << log_message.account_info.merge(
16
- type: "TRAFFIC_#{type}",
17
- value: (log_message.bytes * traffic_correction_factor(type)).round(0)
18
- )
19
- if log_message.status == 200 &&
20
- (log_message.file_extname =~ /\.(mp3|mp4|flv|f4v)/ ||
21
- log_message.file == 'index.m3u8')
14
+ unless log_message.match
15
+ @logger.warn { "Can't extract data from message: #{message}" }
16
+ else
17
+ type = Parser.get_type(log_message.user_agent)
22
18
  data << log_message.account_info.merge(
23
- type: "VISITORS_#{type}",
24
- value: 1,
19
+ type: "TRAFFIC_#{type}",
20
+ value: (log_message.bytes * traffic_correction_factor(type)).round(0)
25
21
  )
22
+ if log_message.status == 200 &&
23
+ (log_message.file_extname =~ /\.(mp3|mp4|flv|f4v)/ ||
24
+ log_message.file == 'index.m3u8')
25
+ data << log_message.account_info.merge(
26
+ type: "VISITORS_#{type}",
27
+ value: 1,
28
+ )
29
+ end
26
30
  end
27
31
  else
28
32
  @logger.debug { "Parser IGNORE: #{message}" }
@@ -1,3 +1,3 @@
1
1
  module SmsLogparser
2
- VERSION = "0.15.4"
2
+ VERSION = "0.15.5"
3
3
  end
@@ -41,4 +41,23 @@ describe SmsLogparser::LogMessage do
41
41
  log_message.user_agent.must_equal 'Googlebot-Video/1.0'
42
42
  end
43
43
 
44
+ it "does not fail on double slashes" do
45
+ log_message = SmsLogparser::LogMessage.new('- - [23/Apr/2014:23:01:24 +0200] "GET /content/244/245/42601//player_logo.jpg?0.19035581778734922 HTTP/1.1" 200 21671 "http://blick.simplex.tv/content/244/245/42601/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36"')
46
+ log_message.customer_id.must_equal nil
47
+ log_message.author_id.must_equal nil
48
+ log_message.project_id.must_equal nil
49
+ log_message.status.must_equal nil
50
+ log_message.bytes.must_equal nil
51
+ log_message.file.must_equal nil
52
+ log_message.args.must_equal nil
53
+ log_message.file_extname.must_equal nil
54
+ log_message.user_agent.must_equal nil
55
+ #log_message.status.must_equal 200
56
+ #log_message.bytes.must_equal 1181
57
+ #log_message.file.must_equal 'player_logo.jpg'
58
+ #log_message.args.must_equal '0.19035581778734922'
59
+ #log_message.file_extname.must_equal 'jpg'
60
+ #log_message.user_agent.must_equal 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36'
61
+ end
62
+
44
63
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sms-logparser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.4
4
+ version: 0.15.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - niwo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-23 00:00:00.000000000 Z
11
+ date: 2014-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler