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 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
@@ -0,0 +1,2 @@
1
+ # For available configuration options, see:
2
+ # https://github.com/testdouble/standard
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # Specify your gem's dependencies in metlo.gemspec
6
+ gemspec
7
+
8
+ gem "rake", "~> 12.0"
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
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "standard/rake"
5
+
6
+ task default: :standard
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metlo
4
+ VERSION = "0.0.3"
5
+ end
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
@@ -0,0 +1,4 @@
1
+ module Metlo
2
+ VERSION: String
3
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ end
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: []