resurfaceio-logger 1.8.3 → 1.8.4

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: 6325802c6b0b9f45a243d514552865acafe0cf8a
4
- data.tar.gz: 549e12382335f21c169d8657313cf2f60c241bda
3
+ metadata.gz: a583801501358c56e7f049b70bb41f3695612f7a
4
+ data.tar.gz: a3db5f5fad430ecadbcef92b75011ec62e478d54
5
5
  SHA512:
6
- metadata.gz: 99ec978f7215220b3d35ac7148aa436ddf1e4981983f884836338760a5e6cf6b55b16fd27f6b930bf16b1a85b8b801e3d05a425ec07c0dfb9804a81765726502
7
- data.tar.gz: 1b126b84b901f850adf3e701a5d97242305f33b844fb72de1c5c2ffcaf04a5006bba7a9a0ff48825884767e55d5b71fd674f2dc9aed8cf2cc9221ef9dc41e9af
6
+ metadata.gz: a65d4f79c84c6c8b3768184c205e527e67704d963e154db0f4d1b1ff3d7ab9a8c3f8f09623a19d55f5eaae194830a3e1cfb0ceffd481cbe581f76050c82ce3ab
7
+ data.tar.gz: 47a2f99ed81a16fbddd0248f743a63a124a67da57f8f2ba02363cf954f563bc3039b34f06f926685ad5fb3db527fa79eb901c5af13adbe1c405e5306c1ef73f3
@@ -1,10 +1,11 @@
1
1
  # coding: utf-8
2
- # © 2016-2017 Resurface Labs LLC
2
+ # © 2016-2018 Resurface Labs LLC
3
3
 
4
4
  require 'resurfaceio/base_logger'
5
5
  require 'resurfaceio/http_logger'
6
6
  require 'resurfaceio/http_logger_for_rack'
7
7
  require 'resurfaceio/http_logger_for_rails'
8
+ require 'resurfaceio/http_message_impl'
8
9
  require 'resurfaceio/http_request_impl'
9
10
  require 'resurfaceio/http_response_impl'
10
11
  require 'resurfaceio/usage_loggers'
@@ -23,6 +24,9 @@ module Resurfaceio
23
24
  class HttpLoggerForRails < HttpLoggerForRails
24
25
  end
25
26
 
27
+ class HttpMessageImpl < HttpMessageImpl
28
+ end
29
+
26
30
  class HttpRequestImpl < HttpRequestImpl
27
31
  end
28
32
 
@@ -1,5 +1,5 @@
1
1
  # coding: utf-8
2
- # © 2016-2017 Resurface Labs LLC
2
+ # © 2016-2018 Resurface Labs LLC
3
3
 
4
4
  require 'uri'
5
5
  require 'net/http'
@@ -48,6 +48,8 @@ class BaseLogger
48
48
  @enabled = false
49
49
  end
50
50
  end
51
+
52
+ @enableable = !@queue.nil? || !@url.nil?
51
53
  end
52
54
 
53
55
  def agent
@@ -60,10 +62,14 @@ class BaseLogger
60
62
  end
61
63
 
62
64
  def enable
63
- @enabled = true unless @queue.nil? && @url.nil?
65
+ @enabled = true if @enableable
64
66
  self
65
67
  end
66
68
 
69
+ def enableable?
70
+ @enableable
71
+ end
72
+
67
73
  def enabled?
68
74
  @enabled && UsageLoggers.enabled?
69
75
  end
@@ -1,107 +1,32 @@
1
1
  # coding: utf-8
2
- # © 2016-2017 Resurface Labs LLC
2
+ # © 2016-2018 Resurface Labs LLC
3
3
 
4
4
  require 'json'
5
5
  require 'resurfaceio/base_logger'
6
+ require 'resurfaceio/http_message_impl'
6
7
 
7
8
  class HttpLogger < BaseLogger
8
9
 
9
10
  AGENT = 'http_logger.rb'.freeze
10
11
 
11
- def initialize(options={})
12
+ def self.string_content_type?(s)
13
+ !s.nil? && !(s =~ /^(text\/(html|plain|xml))|(application\/(json|soap|xml|x-www-form-urlencoded))/i).nil?
14
+ end
15
+
16
+ def initialize(options = {})
12
17
  super(AGENT, options)
13
18
  end
14
19
 
15
- def format(request, response, response_body=nil, request_body=nil, now=nil)
16
- message = []
17
- append_value message, 'request_method', request.request_method
18
- append_value message, 'request_url', request.url
19
- append_value message, 'response_code', response.status
20
- append_request_headers message, request
21
- append_request_params message, request
22
- append_response_headers message, response
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 == ''
20
+ def format(request, response, response_body = nil, request_body = nil, now = nil)
21
+ message = HttpMessageImpl.build(request, response, response_body, request_body)
26
22
  message << ['agent', @agent]
27
23
  message << ['version', @version]
28
24
  message << ['now', now.nil? ? (Time.now.to_f * 1000).floor.to_s : now]
29
25
  JSON.generate message
30
26
  end
31
27
 
32
- def log(request, response, response_body=nil, request_body=nil)
28
+ def log(request, response, response_body = nil, request_body = nil)
33
29
  !enabled? || submit(format(request, response, response_body, request_body))
34
30
  end
35
31
 
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?
38
- end
39
-
40
- protected
41
-
42
- def append_request_headers(message, request)
43
- respond_to_env = request.respond_to?(:env)
44
- if respond_to_env || request.respond_to?(:headers)
45
- headers = respond_to_env ? request.env : request.headers
46
- headers.each do |name, value|
47
- unless value.nil?
48
- if name =~ /^CONTENT_TYPE/
49
- message << ['request_header:content-type', value]
50
- end
51
- if name =~ /^HTTP_/
52
- message << ["request_header:#{name[5..-1].downcase.tr('_', '-')}", value]
53
- end
54
- 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?
72
- end
73
- end
74
-
75
- def append_response_headers(message, response)
76
- found_content_type = false
77
- if response.respond_to?(:headers)
78
- response.headers.each do |name, value|
79
- unless value.nil?
80
- name = name.downcase
81
- found_content_type = true if name =~ /^content-type/
82
- message << ["response_header:#{name}", value]
83
- end
84
- end unless response.headers.nil?
85
- end
86
- unless found_content_type || response.content_type.nil?
87
- message << ['response_header:content-type', response.content_type]
88
- end
89
- end
90
-
91
- def append_value(message, key, value=nil)
92
- unless key.nil?
93
- unless value.nil?
94
- case value
95
- when Array
96
- message << [key, value.join]
97
- when String
98
- message << [key, value]
99
- else
100
- message << [key, value.to_s]
101
- end
102
- end
103
- end
104
- message
105
- end
106
-
107
32
  end
@@ -1,12 +1,12 @@
1
1
  # coding: utf-8
2
- # © 2016-2017 Resurface Labs LLC
2
+ # © 2016-2018 Resurface Labs LLC
3
3
 
4
4
  require 'rack'
5
5
  require 'resurfaceio/http_logger'
6
6
 
7
7
  class HttpLoggerForRack # http://rack.rubyforge.org/doc/SPEC.html
8
8
 
9
- def initialize(app, options={})
9
+ def initialize(app, options = {})
10
10
  @app = app
11
11
  @logger = HttpLogger.new(options)
12
12
  end
@@ -21,7 +21,8 @@ class HttpLoggerForRack # http://rack.rubyforge.org/doc/SPEC.html
21
21
  response = Rack::Response.new(body, status, headers)
22
22
  if HttpLogger::string_content_type?(response.content_type)
23
23
  request = Rack::Request.new(env)
24
- @logger.log(request, response)
24
+ message = @logger.format(request, response)
25
+ @logger.submit(message)
25
26
  end
26
27
  end
27
28
  [status, headers, body]
@@ -1,11 +1,11 @@
1
1
  # coding: utf-8
2
- # © 2016-2017 Resurface Labs LLC
2
+ # © 2016-2018 Resurface Labs LLC
3
3
 
4
4
  require 'resurfaceio/http_logger'
5
5
 
6
6
  class HttpLoggerForRails
7
7
 
8
- def initialize(options={})
8
+ def initialize(options = {})
9
9
  @logger = HttpLogger.new(options)
10
10
  end
11
11
 
@@ -15,11 +15,14 @@ class HttpLoggerForRails
15
15
 
16
16
  def around(controller)
17
17
  yield
18
- request = controller.request
19
- response = controller.response
20
- status = response.status
21
- if (status < 300 || status == 302) && HttpLogger::string_content_type?(response.content_type)
22
- @logger.log(request, response)
18
+ if @logger.enabled?
19
+ request = controller.request
20
+ response = controller.response
21
+ status = response.status
22
+ if (status < 300 || status == 302) && HttpLogger::string_content_type?(response.content_type)
23
+ message = @logger.format(request, response)
24
+ @logger.submit(message)
25
+ end
23
26
  end
24
27
  end
25
28
 
@@ -0,0 +1,89 @@
1
+ # coding: utf-8
2
+ # © 2016-2018 Resurface Labs LLC
3
+
4
+ require 'json'
5
+
6
+ class HttpMessageImpl
7
+
8
+ def self.build(request, response, response_body = nil, request_body = nil)
9
+ message = []
10
+ append_value message, 'request_method', request.request_method
11
+ append_value message, 'request_url', request.url
12
+ append_value message, 'response_code', response.status
13
+ append_request_headers message, request
14
+ append_request_params message, request
15
+ append_response_headers message, response
16
+ append_value message, 'request_body', request_body unless request_body == ''
17
+ final_response_body = response_body.nil? ? response.body : response_body
18
+ append_value message, 'response_body', final_response_body unless final_response_body == ''
19
+ return message
20
+ end
21
+
22
+ protected
23
+
24
+ def self.append_request_headers(message, request)
25
+ respond_to_env = request.respond_to?(:env)
26
+ if respond_to_env || request.respond_to?(:headers)
27
+ headers = respond_to_env ? request.env : request.headers
28
+ headers.each do |name, value|
29
+ unless value.nil?
30
+ if name =~ /^CONTENT_TYPE/
31
+ message << ['request_header:content-type', value]
32
+ end
33
+ if name =~ /^HTTP_/
34
+ message << ["request_header:#{name[5..-1].downcase.tr('_', '-')}", value]
35
+ end
36
+ end
37
+ end unless headers.nil?
38
+ end
39
+ end
40
+
41
+ def self.append_request_params(message, request)
42
+ respond_to_env = request.respond_to?(:env)
43
+ if respond_to_env || request.respond_to?(:form_hash)
44
+ hash = respond_to_env ? request.env['rack.request.form_hash'] : request.form_hash
45
+ hash.each do |name, value|
46
+ append_value message, "request_param:#{name.downcase}", value
47
+ end unless hash.nil?
48
+ end
49
+ if respond_to_env || request.respond_to?(:query_hash)
50
+ hash = respond_to_env ? request.env['rack.request.query_hash'] : request.query_hash
51
+ hash.each do |name, value|
52
+ append_value message, "request_param:#{name.downcase}", value
53
+ end unless hash.nil?
54
+ end
55
+ end
56
+
57
+ def self.append_response_headers(message, response)
58
+ found_content_type = false
59
+ if response.respond_to?(:headers)
60
+ response.headers.each do |name, value|
61
+ unless value.nil?
62
+ name = name.downcase
63
+ found_content_type = true if name =~ /^content-type/
64
+ message << ["response_header:#{name}", value]
65
+ end
66
+ end unless response.headers.nil?
67
+ end
68
+ unless found_content_type || response.content_type.nil?
69
+ message << ['response_header:content-type', response.content_type]
70
+ end
71
+ end
72
+
73
+ def self.append_value(message, key, value = nil)
74
+ unless key.nil?
75
+ unless value.nil?
76
+ case value
77
+ when Array
78
+ message << [key, value.join]
79
+ when String
80
+ message << [key, value]
81
+ else
82
+ message << [key, value.to_s]
83
+ end
84
+ end
85
+ end
86
+ message
87
+ end
88
+
89
+ end
@@ -1,5 +1,5 @@
1
1
  # coding: utf-8
2
- # © 2016-2017 Resurface Labs LLC
2
+ # © 2016-2018 Resurface Labs LLC
3
3
 
4
4
  class HttpRequestImpl
5
5
 
@@ -1,5 +1,5 @@
1
1
  # coding: utf-8
2
- # © 2016-2017 Resurface Labs LLC
2
+ # © 2016-2018 Resurface Labs LLC
3
3
 
4
4
  class HttpResponseImpl
5
5
 
@@ -1,5 +1,5 @@
1
1
  # coding: utf-8
2
- # © 2016-2017 Resurface Labs LLC
2
+ # © 2016-2018 Resurface Labs LLC
3
3
 
4
4
  class UsageLoggers
5
5
 
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.8.3
4
+ version: 1.8.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - RobDickinson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-11 00:00:00.000000000 Z
11
+ date: 2017-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -77,6 +77,7 @@ files:
77
77
  - lib/resurfaceio/http_logger.rb
78
78
  - lib/resurfaceio/http_logger_for_rack.rb
79
79
  - lib/resurfaceio/http_logger_for_rails.rb
80
+ - lib/resurfaceio/http_message_impl.rb
80
81
  - lib/resurfaceio/http_request_impl.rb
81
82
  - lib/resurfaceio/http_response_impl.rb
82
83
  - lib/resurfaceio/usage_loggers.rb