sms-logparser 0.13.4 → 0.14.0

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: 12c5dc49cbd6bb815c90feb4433fa6e36126de92
4
- data.tar.gz: 02ebecafd7879b73ccf498a52183bda282df8d50
3
+ metadata.gz: 7f709270361f9f1208232317d9b37aba1e9aae77
4
+ data.tar.gz: f516c9dee65ec36ec8c9a4f41652a3e42a1f15bf
5
5
  SHA512:
6
- metadata.gz: d786e3685cecbc0d7d0c091ecbce774a3a3a1110719d02c360dc19da43054562a8c2055d99f6e7cc3138ce1fdc4a22f08aee5f38c4e0e70a9b234b46443a6043
7
- data.tar.gz: 3b4bb19d2e5149faecb5cf799b6baae9fea425d250be039150a1fb8575538555da907a66e6a4771db465cfdd5da5c3d0c9c28eb93d4270e1d0ac9bb29c8ef97e
6
+ metadata.gz: 4d726d6420de339030ed9e2f2ec0275968197e2bad698f8098465f9cad536315cdabe929732c2cceaf3237a789c24f608ba19a44b2977ee29cf83ec912d68b06
7
+ data.tar.gz: b6d23da0d26577d621b186e6676edf80050c924e0388f0ddda401ea091a8c88d7612b4fcd23b812693ea748baea2534b52a7603a007cc25a0523fefb168c7830
@@ -32,15 +32,22 @@ module SmsLogparser
32
32
  option :verbose, type: :boolean, aliases: %w(-v), desc: "Verbose output"
33
33
  option :limit, type: :numeric, aliases: %w(-L), desc: "Limit the number of entries to query"
34
34
  option :accepted_api_responses, type: :array, aliases: %w(-r),
35
- desc: "API HTTP responses which are accepted (Default: only accept 200)."
35
+ desc: "API HTTP responses which are accepted (Default: only accept 200)"
36
36
  option :accumulate, type: :boolean, aliases: %w(-A),
37
37
  desc: "Accumulate and cache results and send totals"
38
38
  option :concurrency, type: :numeric, default: 4, aliases: %w(-C),
39
39
  desc: "How many threads to use in parallel when sending cached results"
40
+ option :webcast_traffic_correction, type: :numeric, aliases: %w(-W),
41
+ desc: "Correction factor for webcast traffic"
42
+ option :mobile_traffic_correction, type: :numeric, aliases: %w(-M),
43
+ desc: "Correction factor for mobile traffic"
44
+ option :podcast_traffic_correction, type: :numeric, aliases: %w(-P),
45
+ desc: "Correction factor for podcast traffic"
40
46
  def parse
41
47
  start_message = "Parser started"
42
48
  start_message += options[:simulate] ? " in simulation mode." : "."
43
49
  logger.info(start_message)
50
+ parser = Parser.new(options)
44
51
  cache = DataCache.new if options[:accumulate]
45
52
  mysql = Mysql.new(options)
46
53
  if !options[:simulate] && mysql.parser_running?
@@ -60,7 +67,7 @@ module SmsLogparser
60
67
  mysql.get_entries(last_id: state[:last_event_id], limit: options[:limit]) do |entries|
61
68
  logger.info { "Getting log messages from database..." }
62
69
  entries.each do |entry|
63
- Parser.extract_data_from_msg(entry['Message']) do |data|
70
+ parser.extract_data_from_msg(entry['Message']) do |data|
64
71
  if data
65
72
  if options[:accumulate]
66
73
  cache.add(data)
@@ -1,10 +1,15 @@
1
1
  module SmsLogparser
2
2
  class Parser
3
3
 
4
- def self.extract_data_from_msg(message)
4
+ def initialize(options)
5
+ @options = options
6
+ @logger = SmsLogparser::Loggster.instance
7
+ end
8
+
9
+ def extract_data_from_msg(message)
5
10
  data = nil
6
- if self.match?(message)
7
- SmsLogparser::Loggster.instance.debug { "Parser MATCH: #{message}" }
11
+ if Parser.match?(message)
12
+ @logger.debug { "Parser MATCH: #{message}" }
8
13
  match = message.match /\/content\/(\d+)\/(\d+)\/(\d+)\/(\w+\.\w+)\s.*\"\s\d+\s(\d+).+"(.*)"$/
9
14
  if match
10
15
  traffic_type = Parser.get_traffic_type(match[6])
@@ -14,19 +19,33 @@ module SmsLogparser
14
19
  :author_id => match[2],
15
20
  :project_id => match[3],
16
21
  :file => match[4],
17
- :bytes => match[5],
22
+ :bytes => (match[5].to_f * traffic_correction_factor(traffic_type)).round(0),
18
23
  :user_agent => match[6],
19
24
  :traffic_type => traffic_type,
20
25
  :visitor_type => visitor_type
21
26
  }
22
27
  end
23
28
  else
24
- SmsLogparser::Loggster.instance.debug { "Parser IGNORE: #{message}" }
29
+ @logger.debug { "Parser IGNORE: #{message}" }
25
30
  end
26
31
  return data unless block_given?
27
32
  yield data
28
33
  end
29
34
 
35
+ def traffic_correction_factor(traffic_type)
36
+ factor = case traffic_type
37
+ when 'TRAFFIC_WEBCAST'
38
+ @options[:webcast_traffic_correction] || 1.0
39
+ when 'TRAFFIC_MOBILE'
40
+ @options[:mobile_traffic_correction] || 1.0
41
+ when 'TRAFFIC_PODCAST'
42
+ @options[:podcast_traffic_correction] || 1.0
43
+ else
44
+ 1.0
45
+ end
46
+ factor.to_f
47
+ end
48
+
30
49
  def self.match?(message)
31
50
  match = message.match(/\/content\/.+\/(\S+) .+ (200|206)/i)
32
51
  # ignore detect.mp4 and index.m3u8
@@ -1,3 +1,3 @@
1
1
  module SmsLogparser
2
- VERSION = "0.13.4"
2
+ VERSION = "0.14.0"
3
3
  end
metadata CHANGED
@@ -1,111 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sms-logparser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.4
4
+ version: 0.14.0
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-19 00:00:00.000000000 Z
11
+ date: 2014-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: webmock
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: thor
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: 0.19.1
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.19.1
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: mysql2
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: faraday
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ~>
88
88
  - !ruby/object:Gem::Version
89
89
  version: 0.9.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ~>
95
95
  - !ruby/object:Gem::Version
96
96
  version: 0.9.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: net-http-persistent
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: 2.9.4
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: 2.9.4
111
111
  description: Reads access logs stored in a MySQL database (coming from the SWISS TXT
@@ -117,7 +117,7 @@ executables:
117
117
  extensions: []
118
118
  extra_rdoc_files: []
119
119
  files:
120
- - ".gitignore"
120
+ - .gitignore
121
121
  - Gemfile
122
122
  - LICENSE.txt
123
123
  - README.md
@@ -147,17 +147,17 @@ require_paths:
147
147
  - lib
148
148
  required_ruby_version: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - ">="
150
+ - - '>='
151
151
  - !ruby/object:Gem::Version
152
152
  version: 1.9.3
153
153
  required_rubygems_version: !ruby/object:Gem::Requirement
154
154
  requirements:
155
- - - ">="
155
+ - - '>='
156
156
  - !ruby/object:Gem::Version
157
157
  version: '0'
158
158
  requirements: []
159
159
  rubyforge_project:
160
- rubygems_version: 2.2.0
160
+ rubygems_version: 2.0.3
161
161
  signing_key:
162
162
  specification_version: 4
163
163
  summary: sms-logparser - Logparser for Simplex Media Server (SMS)