metlo-test 0.0.3
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 +7 -0
- data/.standard.yml +2 -0
- data/Gemfile +8 -0
- data/README.md +19 -0
- data/Rakefile +6 -0
- data/lib/metlo/version.rb +5 -0
- data/lib/metlo.rb +118 -0
- data/metlo.gemspec +34 -0
- data/sig/metlo.rbs +4 -0
- metadata +52 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 4d9bacbb08f4ed1193220f1737c4eb0bf15cd63f2c2980eea6a8eec22857a2bd
|
|
4
|
+
data.tar.gz: 529bcb14e044bd5a9242cd299aa50a6e0949143cfdf1b1d7a8dad30618835c58
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 01345dbea837336f0d2a43c0ffa79e60f0e2d03efae6dd35b24a6ef0291b945c1b453d5b86a64b9d0b1cca473ca68a8ddcc9ab10faaa144367a1097fc59d2ef8
|
|
7
|
+
data.tar.gz: 4f7ce52e97ff61d2fe9847fa98030d61a61b7ab4d58a5fe51799a09adaf003ffc5d1eb096779b791e210173a115368534743c7bc69b7fdc65ed1eca488fb4e33
|
data/.standard.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Metlo
|
|
2
|
+
|
|
3
|
+
The Metlo agent for ruby frameworks able to utilize rack based middleware
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Add this line to your application's Gemfile:
|
|
8
|
+
|
|
9
|
+
```ruby
|
|
10
|
+
gem 'metlo'
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
And then execute:
|
|
14
|
+
|
|
15
|
+
$ bundle install
|
|
16
|
+
|
|
17
|
+
Or install it yourself as:
|
|
18
|
+
|
|
19
|
+
$ gem install metlo
|
data/Rakefile
ADDED
data/lib/metlo.rb
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
require_relative "metlo/version"
|
|
2
|
+
require "json"
|
|
3
|
+
|
|
4
|
+
module Metlo
|
|
5
|
+
|
|
6
|
+
class ResponseTimer
|
|
7
|
+
|
|
8
|
+
@@MAX_RES_ITER_COUNT = 10
|
|
9
|
+
@@MAX_BODY_LENGTH = 10 * 1024
|
|
10
|
+
@@LOG_LEVELS = ["trace","debug","info","warn","error"]
|
|
11
|
+
|
|
12
|
+
def initialize(app, params = {})
|
|
13
|
+
p "Ruby OS/ARCHITECTURE (" + RUBY_PLATFORM + ") is not supported by Metlo currently."
|
|
14
|
+
p "Metlo is running in compatibilty mode. Trace capture and blocking operations are not available in this mode."
|
|
15
|
+
|
|
16
|
+
@app = app
|
|
17
|
+
@disable = false
|
|
18
|
+
@block_fn = method(:metlo_default_block)
|
|
19
|
+
@get_user = nil
|
|
20
|
+
|
|
21
|
+
metlo_url = params[:metlo_url]
|
|
22
|
+
api_key = params[:api_key]
|
|
23
|
+
backend_port = params[:backend_port]
|
|
24
|
+
collector_port = params[:collector_port]
|
|
25
|
+
encryption_key = params[:encryption_key]
|
|
26
|
+
log_level = params[:log_level]
|
|
27
|
+
block_response = params[:block_response]
|
|
28
|
+
get_user = params[:get_user]
|
|
29
|
+
|
|
30
|
+
# Metlo URL
|
|
31
|
+
if not (metlo_url.is_a? String)
|
|
32
|
+
p "metlo_url is not a string"
|
|
33
|
+
@disable = true
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Metlo API Key
|
|
37
|
+
if not (api_key.is_a? String)
|
|
38
|
+
p "api_key is not a string"
|
|
39
|
+
@disable = true
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Backend Port
|
|
43
|
+
if not (backend_port.nil?)
|
|
44
|
+
# Value is present
|
|
45
|
+
if not (backend_port.is_a? Integer)
|
|
46
|
+
p "backend_port is not an integer"
|
|
47
|
+
@disable = true
|
|
48
|
+
end
|
|
49
|
+
else
|
|
50
|
+
# Value missing.
|
|
51
|
+
if metlo_url.include? "app.metlo.com"
|
|
52
|
+
backend_port = 443
|
|
53
|
+
else
|
|
54
|
+
backend_port = 8000
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Collector Port
|
|
59
|
+
if not (collector_port.nil?)
|
|
60
|
+
if not (collector_port.is_a? Integer)
|
|
61
|
+
p "collector_port is not an integer"
|
|
62
|
+
@disable = true
|
|
63
|
+
end
|
|
64
|
+
else
|
|
65
|
+
collector_port = 8081
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
if not (log_level.nil?)
|
|
69
|
+
if not (log_level.is_a? String)
|
|
70
|
+
p "log_level is not a string. log_level is expected to be one of trace, debug, info, warn, error."
|
|
71
|
+
p "Defaulting log level to info."
|
|
72
|
+
log_level = "info"
|
|
73
|
+
elsif not (@@LOG_LEVELS.include? log_level)
|
|
74
|
+
p "log_level is not one of trace, debug, info, warn, error."
|
|
75
|
+
p "Defaulting log level to info"
|
|
76
|
+
log_level = "info"
|
|
77
|
+
end
|
|
78
|
+
else
|
|
79
|
+
log_level = "info"
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
if not (encryption_key.nil?) and not (encryption_key.is_a? String)
|
|
83
|
+
p "Encryption key is expected to be a string."
|
|
84
|
+
encryption_key = nil
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
if not (block_response.nil?)
|
|
88
|
+
if not defined? block_response == "expression"
|
|
89
|
+
p "block_response param is expected to be a symbol to a method/function"
|
|
90
|
+
@block_fn = method(:metlo_default_block)
|
|
91
|
+
else
|
|
92
|
+
if not(((defined? method(block_response)) == "method") and (method(block_response).arity == 1))
|
|
93
|
+
p "block_response param is expected to be a method that takes a single param"
|
|
94
|
+
@block_fn = method(:metlo_default_block)
|
|
95
|
+
else
|
|
96
|
+
@block_fn = method(block_response)
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
else
|
|
100
|
+
@block_fn = method(:metlo_default_block)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
if not (get_user.nil?)
|
|
105
|
+
if not (defined? get_user == "expression" and defined? method(get_user) == "method" and method(get_user).arity == 1)
|
|
106
|
+
p "get_user param is expected to be a method that takes a single param env"
|
|
107
|
+
@get_user = nil
|
|
108
|
+
else
|
|
109
|
+
@get_user = method(get_user)
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def call(env)
|
|
115
|
+
@app.call(env)
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
data/metlo.gemspec
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "lib/metlo/version"
|
|
4
|
+
|
|
5
|
+
raise "RUBY_TARGET_PLATFORM env var not defined" if ENV["RUBY_TARGET_PLATFORM"].nil?
|
|
6
|
+
|
|
7
|
+
Gem::Specification.new do |spec|
|
|
8
|
+
spec.name = "metlo-test"
|
|
9
|
+
spec.version = Metlo::VERSION
|
|
10
|
+
spec.authors = ["Metlo"]
|
|
11
|
+
spec.description = "The Ruby Agent for Metlo"
|
|
12
|
+
spec.summary = "The Ruby Agent for Metlo"
|
|
13
|
+
spec.homepage = "https://www.metlo.com"
|
|
14
|
+
spec.license = "MIT"
|
|
15
|
+
spec.required_ruby_version = ">= 2.6.0"
|
|
16
|
+
|
|
17
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
|
18
|
+
spec.metadata["source_code_uri"] = "https://www.github.com/metlo-labs/metlo"
|
|
19
|
+
|
|
20
|
+
spec.platform = ENV["RUBY_TARGET_PLATFORM"]
|
|
21
|
+
|
|
22
|
+
spec.files = [
|
|
23
|
+
".standard.yml",
|
|
24
|
+
"Gemfile",
|
|
25
|
+
"README.md",
|
|
26
|
+
"Rakefile",
|
|
27
|
+
"lib/metlo.rb",
|
|
28
|
+
"lib/metlo/version.rb",
|
|
29
|
+
"metlo.gemspec",
|
|
30
|
+
"sig/metlo.rbs",
|
|
31
|
+
]
|
|
32
|
+
spec.require_paths = ["lib"]
|
|
33
|
+
|
|
34
|
+
end
|
data/sig/metlo.rbs
ADDED
metadata
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: metlo-test
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.3
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Metlo
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2023-07-28 00:00:00.000000000 Z
|
|
12
|
+
dependencies: []
|
|
13
|
+
description: The Ruby Agent for Metlo
|
|
14
|
+
email:
|
|
15
|
+
executables: []
|
|
16
|
+
extensions: []
|
|
17
|
+
extra_rdoc_files: []
|
|
18
|
+
files:
|
|
19
|
+
- ".standard.yml"
|
|
20
|
+
- Gemfile
|
|
21
|
+
- README.md
|
|
22
|
+
- Rakefile
|
|
23
|
+
- lib/metlo.rb
|
|
24
|
+
- lib/metlo/version.rb
|
|
25
|
+
- metlo.gemspec
|
|
26
|
+
- sig/metlo.rbs
|
|
27
|
+
homepage: https://www.metlo.com
|
|
28
|
+
licenses:
|
|
29
|
+
- MIT
|
|
30
|
+
metadata:
|
|
31
|
+
homepage_uri: https://www.metlo.com
|
|
32
|
+
source_code_uri: https://www.github.com/metlo-labs/metlo
|
|
33
|
+
post_install_message:
|
|
34
|
+
rdoc_options: []
|
|
35
|
+
require_paths:
|
|
36
|
+
- lib
|
|
37
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
38
|
+
requirements:
|
|
39
|
+
- - ">="
|
|
40
|
+
- !ruby/object:Gem::Version
|
|
41
|
+
version: 2.6.0
|
|
42
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - ">="
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '0'
|
|
47
|
+
requirements: []
|
|
48
|
+
rubygems_version: 3.4.17
|
|
49
|
+
signing_key:
|
|
50
|
+
specification_version: 4
|
|
51
|
+
summary: The Ruby Agent for Metlo
|
|
52
|
+
test_files: []
|