resurfaceio-logger 1.7.14 → 1.8.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 43259eb0b70a63bd2d27ff40915e5046a0296784
4
- data.tar.gz: 011033a042cdc4642b50edfc29148d55ffca0926
3
+ metadata.gz: b3be2e4cca1408ec107b7311ee3719b89ba23bd0
4
+ data.tar.gz: 98406ab661b3dbfb74e3f62b231c288363e444b8
5
5
  SHA512:
6
- metadata.gz: ec22698b4ca603ab73fc1d68d73ccb958a207679f147755a517bdc20f330c1266d719d3807c00696eba4823a858fe97de19c3aeb77808238720832ef7fe4e508
7
- data.tar.gz: 0ffd311454eca86d67b465316116c067b9aa811d2f02bd01b4ee8cdb142f4bd880a9566f98a64b7b7b3adc3fd35d5bfa13c599bcd21bf4196bc6735be56a8f58
6
+ metadata.gz: 90a62d981f55556545de8350709e967206f0c2f706afa7fdf988dfb435219c57d235b6ee212761249ddeb1c19c95de18336c2c0ab2dd1d010e7de0528017b04d
7
+ data.tar.gz: 5f94610eb8077981971636bca25cbe322773a3241fb03b2b6845ab4a84e3db9479535dff239a81dc506cff76d4d1bd525ddea030f46e84d9fabdbc9192391f16
@@ -4,12 +4,15 @@
4
4
  require 'uri'
5
5
  require 'net/http'
6
6
  require 'net/https'
7
+ require 'zlib'
7
8
  require 'resurfaceio/usage_loggers'
8
9
 
9
10
  class BaseLogger
10
11
 
11
- def initialize(agent, options={})
12
+ def initialize(agent, options = {})
12
13
  @agent = agent
14
+ @skip_compression = false
15
+ @skip_submission = false
13
16
  @version = BaseLogger.version_lookup
14
17
 
15
18
  # set options in priority order
@@ -65,8 +68,24 @@ class BaseLogger
65
68
  @enabled && UsageLoggers.enabled?
66
69
  end
67
70
 
71
+ def skip_compression?
72
+ @skip_compression
73
+ end
74
+
75
+ def skip_compression=(value)
76
+ @skip_compression = value
77
+ end
78
+
79
+ def skip_submission?
80
+ @skip_submission
81
+ end
82
+
83
+ def skip_submission=(value)
84
+ @skip_submission = value
85
+ end
86
+
68
87
  def submit(json)
69
- if !enabled?
88
+ if @skip_submission || !enabled?
70
89
  true
71
90
  elsif @queue
72
91
  @queue << json
@@ -77,7 +96,12 @@ class BaseLogger
77
96
  @url_connection ||= Net::HTTP.new(@url_parsed.host, @url_parsed.port)
78
97
  @url_connection.use_ssl = @url.include?('https')
79
98
  request = Net::HTTP::Post.new(@url_parsed.path)
80
- request.body = json
99
+ if @skip_compression
100
+ request.body = json
101
+ else
102
+ request.add_field('Content-Encoding', 'deflated')
103
+ request.body = Zlib::Deflate.deflate(json)
104
+ end
81
105
  response = @url_connection.request(request)
82
106
  response.code.to_i == 204
83
107
  rescue SocketError
@@ -12,27 +12,29 @@ class HttpLogger < BaseLogger
12
12
  super(AGENT, options)
13
13
  end
14
14
 
15
- def format(request, request_body, response, response_body, now=nil)
15
+ def format(request, response, response_body=nil, request_body=nil, now=nil)
16
16
  message = []
17
17
  append_value message, 'request_method', request.request_method
18
18
  append_value message, 'request_url', request.url
19
19
  append_value message, 'response_code', response.status
20
20
  append_request_headers message, request
21
+ append_request_params message, request
21
22
  append_response_headers message, response
22
- append_value message, 'request_body', request_body.nil? ? request.body : request_body
23
- append_value message, 'response_body', response_body.nil? ? response.body : response_body
23
+ append_value message, 'request_body', request_body unless request_body == ''
24
+ final_response_body = response_body.nil? ? response.body : response_body
25
+ append_value message, 'response_body', final_response_body unless final_response_body == ''
24
26
  message << ['agent', @agent]
25
27
  message << ['version', @version]
26
28
  message << ['now', now.nil? ? (Time.now.to_f * 1000).floor.to_s : now]
27
29
  JSON.generate message
28
30
  end
29
31
 
30
- def log(request, request_body, response, response_body)
31
- !enabled? || submit(format(request, request_body, response, response_body))
32
+ def log(request, response, response_body=nil, request_body=nil)
33
+ !enabled? || submit(format(request, response, response_body, request_body))
32
34
  end
33
35
 
34
- def string_content_type?(s)
35
- !s.nil? && s =~ /^(text\/(html|plain|xml))|(application\/(json|soap|xml|x-www-form-urlencoded))/i
36
+ def self.string_content_type?(s)
37
+ !s.nil? && !(s =~ /^(text\/(html|plain|xml))|(application\/(json|soap|xml|x-www-form-urlencoded))/i).nil?
36
38
  end
37
39
 
38
40
  protected
@@ -50,7 +52,23 @@ class HttpLogger < BaseLogger
50
52
  message << ["request_header.#{name[5..-1].downcase.tr('_', '-')}", value]
51
53
  end
52
54
  end
53
- end
55
+ end unless headers.nil?
56
+ end
57
+ end
58
+
59
+ def append_request_params(message, request)
60
+ respond_to_env = request.respond_to?(:env)
61
+ if respond_to_env || request.respond_to?(:form_hash)
62
+ hash = respond_to_env ? request.env['rack.request.form_hash'] : request.form_hash
63
+ hash.each do |name, value|
64
+ append_value message, "request_param.#{name.downcase}", value
65
+ end unless hash.nil?
66
+ end
67
+ if respond_to_env || request.respond_to?(:query_hash)
68
+ hash = respond_to_env ? request.env['rack.request.query_hash'] : request.query_hash
69
+ hash.each do |name, value|
70
+ append_value message, "request_param.#{name.downcase}", value
71
+ end unless hash.nil?
54
72
  end
55
73
  end
56
74
 
@@ -63,7 +81,7 @@ class HttpLogger < BaseLogger
63
81
  found_content_type = true if name =~ /^content-type/
64
82
  message << ["response_header.#{name}", value]
65
83
  end
66
- end
84
+ end unless response.headers.nil?
67
85
  end
68
86
  unless found_content_type || response.content_type.nil?
69
87
  message << ['response_header.content-type', response.content_type]
@@ -79,11 +97,7 @@ class HttpLogger < BaseLogger
79
97
  when String
80
98
  message << [key, value]
81
99
  else
82
- if value.respond_to?(:read)
83
- message << [key, value.read]
84
- else
85
- message << [key, value.to_s]
86
- end
100
+ message << [key, value.to_s]
87
101
  end
88
102
  end
89
103
  end
@@ -11,13 +11,17 @@ class HttpLoggerForRack # http://rack.rubyforge.org/doc/SPEC.html
11
11
  @logger = HttpLogger.new(options)
12
12
  end
13
13
 
14
+ def logger
15
+ @logger
16
+ end
17
+
14
18
  def call(env)
15
19
  status, headers, body = @app.call(env)
16
- if @logger.enabled? && status < 300
20
+ if @logger.enabled? && (status < 300 || status == 302)
17
21
  response = Rack::Response.new(body, status, headers)
18
- if @logger.string_content_type?(response.content_type)
22
+ if HttpLogger::string_content_type?(response.content_type)
19
23
  request = Rack::Request.new(env)
20
- @logger.log(request, nil, response, nil)
24
+ @logger.log(request, response)
21
25
  end
22
26
  end
23
27
  [status, headers, body]
@@ -9,11 +9,17 @@ class HttpLoggerForRails
9
9
  @logger = HttpLogger.new(options)
10
10
  end
11
11
 
12
+ def logger
13
+ @logger
14
+ end
15
+
12
16
  def around(controller)
13
17
  yield
18
+ request = controller.request
14
19
  response = controller.response
15
- if response.status < 300 && @logger.string_content_type?(response.content_type)
16
- @logger.log(controller.request, nil, response, nil)
20
+ status = response.status
21
+ if (status < 300 || status == 302) && HttpLogger::string_content_type?(response.content_type)
22
+ @logger.log(request, response)
17
23
  end
18
24
  end
19
25
 
@@ -4,8 +4,9 @@
4
4
  class HttpRequestImpl
5
5
 
6
6
  def initialize
7
+ @form_hash = Hash.new
7
8
  @headers = Hash.new
8
- @raw_body = nil
9
+ @query_hash = Hash.new
9
10
  end
10
11
 
11
12
  def add_header(key, value)
@@ -19,10 +20,6 @@ class HttpRequestImpl
19
20
  end
20
21
  end
21
22
 
22
- def body
23
- @raw_body ? StringIO.new(@raw_body) : nil
24
- end
25
-
26
23
  def content_type
27
24
  @headers['CONTENT_TYPE']
28
25
  end
@@ -31,11 +28,18 @@ class HttpRequestImpl
31
28
  @headers['CONTENT_TYPE'] = content_type
32
29
  end
33
30
 
31
+ def form_hash
32
+ @form_hash
33
+ end
34
+
34
35
  def headers
35
36
  @headers
36
37
  end
37
38
 
38
- attr_accessor :raw_body
39
+ def query_hash
40
+ @query_hash
41
+ end
42
+
39
43
  attr_accessor :request_method
40
44
  attr_accessor :url
41
45
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resurfaceio-logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.14
4
+ version: 1.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - RobDickinson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-22 00:00:00.000000000 Z
11
+ date: 2017-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler