readme-metrics 2.2.0 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +5 -6
- data/README.md +1 -1
- data/examples/metrics-rails/Gemfile +0 -2
- data/examples/metrics-rails/Gemfile.lock +14 -17
- data/examples/metrics-rails/config/environments/production.rb +1 -1
- data/lib/readme/http_request.rb +36 -8
- data/lib/readme/mask.rb +11 -0
- data/lib/readme/metrics/version.rb +1 -1
- data/lib/readme/payload.rb +2 -0
- data/readme-metrics.gemspec +1 -0
- metadata +24 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a539e9a1512385c01ba8b037b3325e89a762b2965f5b2b5aa6394989b2774d7
|
4
|
+
data.tar.gz: 3c95661d00dc2392ec8f805371ab8ed102335d697bfed20de6c11f14826e0c2e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca188a7f894ee7718907c902a1ec724b4aff21afcbc2007a3ec14cda78b8abb1ea2f846cda8ef8c882ec984de304a2f9bd7c4e530f8a7034682f365ee0271e6a
|
7
|
+
data.tar.gz: c90dd5e1b59db664af5f26b4f13c6e544eabe5a766ed2d8e7170e0dfd93849846efa5ff66251535ed2c957e772fe69936c61e3903159b9ed23267a9b322ec933
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
readme-metrics (2.
|
4
|
+
readme-metrics (2.4.0)
|
5
5
|
httparty (~> 0.18)
|
6
|
+
rack (>= 2.2, < 4)
|
6
7
|
|
7
8
|
GEM
|
8
9
|
remote: https://rubygems.org/
|
@@ -14,15 +15,13 @@ GEM
|
|
14
15
|
safe_yaml (~> 1.0.0)
|
15
16
|
diff-lcs (1.4.4)
|
16
17
|
hashdiff (1.0.1)
|
17
|
-
httparty (0.
|
18
|
-
|
18
|
+
httparty (0.21.0)
|
19
|
+
mini_mime (>= 1.0.0)
|
19
20
|
multi_xml (>= 0.5.2)
|
20
21
|
json (2.6.2)
|
21
22
|
json-schema (2.8.1)
|
22
23
|
addressable (>= 2.4)
|
23
|
-
|
24
|
-
mime-types-data (~> 3.2015)
|
25
|
-
mime-types-data (3.2022.0105)
|
24
|
+
mini_mime (1.1.5)
|
26
25
|
multi_xml (0.6.0)
|
27
26
|
parallel (1.22.1)
|
28
27
|
parser (3.1.2.1)
|
data/README.md
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
<p align="center">
|
12
12
|
<a href="https://rubygems.org/gems/readme-metrics"><img src="https://img.shields.io/gem/v/readme-metrics.svg?style=for-the-badge" alt="Latest release"></a>
|
13
|
-
<a href="https://github.com/readmeio/metrics-sdks"><img src="https://img.shields.io/github/workflow/status/readmeio/metrics-sdks/ruby.
|
13
|
+
<a href="https://github.com/readmeio/metrics-sdks"><img src="https://img.shields.io/github/actions/workflow/status/readmeio/metrics-sdks/ruby.yml?branch=main&style=for-the-badge" alt="Build status"></a>
|
14
14
|
</p>
|
15
15
|
|
16
16
|
With [ReadMe's Metrics API](https://readme.com/metrics) your team can get deep insights into your API's usage. If you're a developer, it takes a few small steps to send your API logs to [ReadMe](http://readme.com). Here's an overview of how the integration works:
|
@@ -1,8 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../..
|
3
3
|
specs:
|
4
|
-
readme-metrics (2.
|
4
|
+
readme-metrics (2.3.0)
|
5
5
|
httparty (~> 0.18)
|
6
|
+
rack (>= 2.2, < 4)
|
6
7
|
|
7
8
|
GEM
|
8
9
|
remote: https://rubygems.org/
|
@@ -82,8 +83,8 @@ GEM
|
|
82
83
|
erubi (1.11.0)
|
83
84
|
globalid (1.0.0)
|
84
85
|
activesupport (>= 5.0)
|
85
|
-
httparty (0.
|
86
|
-
|
86
|
+
httparty (0.21.0)
|
87
|
+
mini_mime (>= 1.0.0)
|
87
88
|
multi_xml (>= 0.5.2)
|
88
89
|
i18n (1.12.0)
|
89
90
|
concurrent-ruby (~> 1.0)
|
@@ -97,11 +98,8 @@ GEM
|
|
97
98
|
mini_mime (>= 0.1.1)
|
98
99
|
marcel (1.0.2)
|
99
100
|
method_source (1.0.0)
|
100
|
-
mime-types (3.4.1)
|
101
|
-
mime-types-data (~> 3.2015)
|
102
|
-
mime-types-data (3.2022.0105)
|
103
101
|
mini_mime (1.1.2)
|
104
|
-
mini_portile2 (2.8.
|
102
|
+
mini_portile2 (2.8.1)
|
105
103
|
minitest (5.16.3)
|
106
104
|
multi_xml (0.6.0)
|
107
105
|
net-imap (0.2.3)
|
@@ -119,15 +117,15 @@ GEM
|
|
119
117
|
net-protocol
|
120
118
|
timeout
|
121
119
|
nio4r (2.5.8)
|
122
|
-
nokogiri (1.
|
120
|
+
nokogiri (1.14.3)
|
123
121
|
mini_portile2 (~> 2.8.0)
|
124
122
|
racc (~> 1.4)
|
125
|
-
nokogiri (1.
|
123
|
+
nokogiri (1.14.3-arm64-darwin)
|
126
124
|
racc (~> 1.4)
|
127
125
|
puma (5.6.5)
|
128
126
|
nio4r (~> 2.0)
|
129
|
-
racc (1.6.
|
130
|
-
rack (2.2.
|
127
|
+
racc (1.6.2)
|
128
|
+
rack (2.2.7)
|
131
129
|
rack-test (2.0.2)
|
132
130
|
rack (>= 1.3)
|
133
131
|
rails (7.0.3.1)
|
@@ -157,10 +155,12 @@ GEM
|
|
157
155
|
thor (~> 1.0)
|
158
156
|
zeitwerk (~> 2.5)
|
159
157
|
rake (13.0.6)
|
160
|
-
reline (0.3.
|
158
|
+
reline (0.3.2)
|
161
159
|
io-console (~> 0.5)
|
162
|
-
sqlite3 (1.
|
163
|
-
|
160
|
+
sqlite3 (1.6.1)
|
161
|
+
mini_portile2 (~> 2.8.0)
|
162
|
+
sqlite3 (1.6.1-arm64-darwin)
|
163
|
+
strscan (3.0.6)
|
164
164
|
thor (1.2.1)
|
165
165
|
timeout (0.3.0)
|
166
166
|
tzinfo (2.0.5)
|
@@ -182,8 +182,5 @@ DEPENDENCIES
|
|
182
182
|
sqlite3 (~> 1.4)
|
183
183
|
tzinfo-data
|
184
184
|
|
185
|
-
RUBY VERSION
|
186
|
-
ruby 3.1.2p20
|
187
|
-
|
188
185
|
BUNDLED WITH
|
189
186
|
2.3.11
|
@@ -51,7 +51,7 @@ Rails.application.configure do
|
|
51
51
|
config.active_support.report_deprecations = false
|
52
52
|
|
53
53
|
# Use default logging formatter so that PID and timestamp are not suppressed.
|
54
|
-
config.log_formatter =
|
54
|
+
config.log_formatter = Logger::Formatter.new
|
55
55
|
|
56
56
|
# Use a different logger for distributed setups.
|
57
57
|
# require "syslog/logger"
|
data/lib/readme/http_request.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'readme/mask'
|
1
2
|
require 'rack'
|
2
3
|
require 'rack/request'
|
3
4
|
require_relative 'content_type_helper'
|
@@ -6,15 +7,32 @@ module Readme
|
|
6
7
|
class HttpRequest
|
7
8
|
include ContentTypeHelper
|
8
9
|
|
10
|
+
IS_RACK_V3 = Gem.loaded_specs['rack'].version > Gem::Version.create('3.0')
|
11
|
+
|
12
|
+
# rubocop:disable Style/MutableConstant
|
9
13
|
HTTP_NON_HEADERS = [
|
10
14
|
Rack::HTTP_COOKIE,
|
11
|
-
Rack::HTTP_VERSION,
|
12
15
|
Rack::HTTP_HOST,
|
13
16
|
Rack::HTTP_PORT
|
14
|
-
]
|
17
|
+
]
|
18
|
+
# rubocop:enable Style/MutableConstant
|
19
|
+
|
20
|
+
if IS_RACK_V3
|
21
|
+
HTTP_NON_HEADERS.push(Rack::SERVER_PROTOCOL)
|
22
|
+
else
|
23
|
+
HTTP_NON_HEADERS.push(Rack::HTTP_VERSION)
|
24
|
+
end
|
25
|
+
|
26
|
+
HTTP_NON_HEADERS.freeze
|
15
27
|
|
16
28
|
def initialize(env)
|
29
|
+
# Sanitize the auth header, if it exists
|
30
|
+
env['HTTP_AUTHORIZATION'] = Readme::Mask.mask(env['HTTP_AUTHORIZATION']) if env.key?('HTTP_AUTHORIZATION')
|
17
31
|
@request = Rack::Request.new(env)
|
32
|
+
|
33
|
+
return unless IS_RACK_V3
|
34
|
+
|
35
|
+
@input = Rack::RewindableInput.new(@request.body)
|
18
36
|
end
|
19
37
|
|
20
38
|
def url
|
@@ -30,7 +48,11 @@ module Readme
|
|
30
48
|
end
|
31
49
|
|
32
50
|
def http_version
|
33
|
-
|
51
|
+
if IS_RACK_V3
|
52
|
+
@request.get_header(Rack::SERVER_PROTOCOL)
|
53
|
+
else
|
54
|
+
@request.get_header(Rack::HTTP_VERSION)
|
55
|
+
end
|
34
56
|
end
|
35
57
|
|
36
58
|
def request_method
|
@@ -64,11 +86,17 @@ module Readme
|
|
64
86
|
end
|
65
87
|
|
66
88
|
def body
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
89
|
+
if IS_RACK_V3
|
90
|
+
body = @input.read
|
91
|
+
@input.rewind
|
92
|
+
body
|
93
|
+
else
|
94
|
+
@request.body.rewind
|
95
|
+
content = @request.body.read
|
96
|
+
@request.body.rewind
|
97
|
+
|
98
|
+
content
|
99
|
+
end
|
72
100
|
end
|
73
101
|
|
74
102
|
def parsed_form_data
|
data/lib/readme/mask.rb
ADDED
data/lib/readme/payload.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'readme/mask'
|
1
2
|
require 'socket'
|
2
3
|
require 'securerandom'
|
3
4
|
|
@@ -15,6 +16,7 @@ module Readme
|
|
15
16
|
@har = har
|
16
17
|
@user_info = info.slice(:id, :label, :email)
|
17
18
|
@user_info[:id] = info[:api_key] unless info[:api_key].nil? # swap api_key for id if api_key is present
|
19
|
+
@user_info[:id] = Readme::Mask.mask(@user_info[:id])
|
18
20
|
@log_id = info[:log_id]
|
19
21
|
@ignore = info[:ignore]
|
20
22
|
@ip_address = ip_address
|
data/readme-metrics.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: readme-metrics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ReadMe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -24,6 +24,26 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0.18'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rack
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.2'
|
34
|
+
- - "<"
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '4'
|
37
|
+
type: :runtime
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '2.2'
|
44
|
+
- - "<"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '4'
|
27
47
|
description: Middleware for logging requests to Readme's metrics API
|
28
48
|
email:
|
29
49
|
- support@readme.io
|
@@ -82,6 +102,7 @@ files:
|
|
82
102
|
- lib/readme/har/serializer.rb
|
83
103
|
- lib/readme/http_request.rb
|
84
104
|
- lib/readme/http_response.rb
|
105
|
+
- lib/readme/mask.rb
|
85
106
|
- lib/readme/metrics.rb
|
86
107
|
- lib/readme/metrics/version.rb
|
87
108
|
- lib/readme/payload.rb
|
@@ -110,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
131
|
- !ruby/object:Gem::Version
|
111
132
|
version: '0'
|
112
133
|
requirements: []
|
113
|
-
rubygems_version: 3.
|
134
|
+
rubygems_version: 3.4.21
|
114
135
|
signing_key:
|
115
136
|
specification_version: 4
|
116
137
|
summary: SDK for Readme's metrics API
|