resurfaceio-logger 1.8.3 → 1.8.4

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: 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