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 +4 -4
- data/lib/resurfaceio/all.rb +5 -1
- data/lib/resurfaceio/base_logger.rb +8 -2
- data/lib/resurfaceio/http_logger.rb +10 -85
- data/lib/resurfaceio/http_logger_for_rack.rb +4 -3
- data/lib/resurfaceio/http_logger_for_rails.rb +10 -7
- data/lib/resurfaceio/http_message_impl.rb +89 -0
- data/lib/resurfaceio/http_request_impl.rb +1 -1
- data/lib/resurfaceio/http_response_impl.rb +1 -1
- data/lib/resurfaceio/usage_loggers.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a583801501358c56e7f049b70bb41f3695612f7a
|
4
|
+
data.tar.gz: a3db5f5fad430ecadbcef92b75011ec62e478d54
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a65d4f79c84c6c8b3768184c205e527e67704d963e154db0f4d1b1ff3d7ab9a8c3f8f09623a19d55f5eaae194830a3e1cfb0ceffd481cbe581f76050c82ce3ab
|
7
|
+
data.tar.gz: 47a2f99ed81a16fbddd0248f743a63a124a67da57f8f2ba02363cf954f563bc3039b34f06f926685ad5fb3db527fa79eb901c5af13adbe1c405e5306c1ef73f3
|
data/lib/resurfaceio/all.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
# © 2016-
|
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-
|
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
|
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-
|
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
|
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-
|
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.
|
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-
|
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
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
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
|
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.
|
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
|
+
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
|