dev_suite 0.2.4 → 0.2.7
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/.rubocop.yml +4 -5
- data/.vscode/extensions.json +8 -0
- data/.vscode/launch.json +39 -0
- data/.vscode/settings.json +28 -0
- data/Gemfile +6 -1
- data/Gemfile.lock +28 -2
- data/README.md +69 -8
- data/bin/rspec +27 -0
- data/dev_suite.gemspec +0 -4
- data/lib/dev_suite/cli/commands/base.rb +0 -2
- data/lib/dev_suite/cli/commands/tree.rb +3 -3
- data/lib/dev_suite/cli/commands/version.rb +1 -1
- data/lib/dev_suite/cli/main.rb +1 -1
- data/lib/dev_suite/dev_suite.rb +12 -0
- data/lib/dev_suite/directory_tree/builder/base.rb +1 -1
- data/lib/dev_suite/directory_tree/builder/builder.rb +13 -0
- data/lib/dev_suite/directory_tree/builder.rb +1 -12
- data/lib/dev_suite/directory_tree/config/config.rb +11 -0
- data/lib/dev_suite/directory_tree/config/configuration.rb +34 -0
- data/lib/dev_suite/directory_tree/config.rb +2 -36
- data/lib/dev_suite/directory_tree/directory_tree.rb +0 -3
- data/lib/dev_suite/directory_tree/node/node.rb +12 -0
- data/lib/dev_suite/directory_tree/node.rb +1 -4
- data/lib/dev_suite/directory_tree/renderer/base.rb +1 -7
- data/lib/dev_suite/directory_tree/renderer/renderer.rb +14 -0
- data/lib/dev_suite/directory_tree/renderer.rb +1 -13
- data/lib/dev_suite/directory_tree/visualizer/base.rb +1 -1
- data/lib/dev_suite/directory_tree/visualizer/visualizer.rb +16 -0
- data/lib/dev_suite/directory_tree/visualizer.rb +1 -15
- data/lib/dev_suite/performance/analyzer.rb +1 -1
- data/lib/dev_suite/performance/config/config.rb +11 -0
- data/lib/dev_suite/performance/config/configuration.rb +30 -0
- data/lib/dev_suite/performance/config.rb +2 -30
- data/lib/dev_suite/performance/data/data.rb +9 -0
- data/lib/dev_suite/performance/data.rb +1 -1
- data/lib/dev_suite/performance/profiler/base.rb +1 -1
- data/lib/dev_suite/performance/profiler/profiler.rb +16 -0
- data/lib/dev_suite/performance/profiler.rb +1 -20
- data/lib/dev_suite/performance/profiler_manager.rb +1 -0
- data/lib/dev_suite/performance/{reportor → reporter}/base.rb +2 -2
- data/lib/dev_suite/performance/{reportor → reporter}/helpers/stat_mappings.rb +1 -1
- data/lib/dev_suite/performance/{reportor → reporter}/helpers/table_builder.rb +1 -1
- data/lib/dev_suite/performance/{reportor → reporter}/helpers.rb +1 -1
- data/lib/dev_suite/performance/reporter/reporter.rb +15 -0
- data/lib/dev_suite/performance/{reportor → reporter}/simple.rb +1 -1
- data/lib/dev_suite/performance/reporter.rb +9 -0
- data/lib/dev_suite/performance.rb +1 -1
- data/lib/dev_suite/request_logger/adapter/adapter.rb +31 -0
- data/lib/dev_suite/request_logger/adapter/base.rb +17 -0
- data/lib/dev_suite/request_logger/adapter/faraday.rb +37 -0
- data/lib/dev_suite/request_logger/adapter/middleware/faraday.rb +22 -0
- data/lib/dev_suite/request_logger/adapter/net_http.rb +43 -0
- data/lib/dev_suite/request_logger/adapter.rb +9 -0
- data/lib/dev_suite/request_logger/config/config.rb +11 -0
- data/lib/dev_suite/request_logger/config/configuration.rb +24 -0
- data/lib/dev_suite/request_logger/config.rb +9 -0
- data/lib/dev_suite/request_logger/extractor/base.rb +17 -0
- data/lib/dev_suite/request_logger/extractor/extractor.rb +22 -0
- data/lib/dev_suite/request_logger/extractor/faraday.rb +37 -0
- data/lib/dev_suite/request_logger/extractor/net_http.rb +36 -0
- data/lib/dev_suite/request_logger/extractor.rb +9 -0
- data/lib/dev_suite/request_logger/logger.rb +87 -0
- data/lib/dev_suite/request_logger/request.rb +19 -0
- data/lib/dev_suite/request_logger/request_logger.rb +32 -0
- data/lib/dev_suite/request_logger/response.rb +28 -0
- data/lib/dev_suite/request_logger.rb +7 -0
- data/lib/dev_suite/utils/color/color.rb +12 -0
- data/lib/dev_suite/utils/color/config/config.rb +13 -0
- data/lib/dev_suite/utils/color/config/configuration.rb +31 -0
- data/lib/dev_suite/utils/color/config.rb +2 -31
- data/lib/dev_suite/utils/color/palette/base.rb +1 -14
- data/lib/dev_suite/utils/color/palette/palette.rb +16 -0
- data/lib/dev_suite/utils/color/palette.rb +1 -13
- data/lib/dev_suite/utils/color/strategy/base.rb +1 -1
- data/lib/dev_suite/utils/color/strategy/strategy.rb +20 -0
- data/lib/dev_suite/utils/color/strategy/theme.rb +6 -7
- data/lib/dev_suite/utils/color/strategy.rb +1 -21
- data/lib/dev_suite/utils/color.rb +1 -4
- data/lib/dev_suite/utils/construct/component/base.rb +30 -0
- data/lib/dev_suite/utils/construct/component/component.rb +12 -0
- data/lib/dev_suite/utils/construct/component/initializer.rb +28 -0
- data/lib/dev_suite/utils/construct/component/manager.rb +57 -0
- data/lib/dev_suite/utils/construct/component.rb +11 -0
- data/lib/dev_suite/utils/construct/config/attribute/attr_definition.rb +76 -0
- data/lib/dev_suite/utils/construct/config/attribute/attr_initialization.rb +22 -0
- data/lib/dev_suite/utils/construct/config/attribute/attr_resolving.rb +80 -0
- data/lib/dev_suite/utils/construct/config/attribute/attribute.rb +24 -0
- data/lib/dev_suite/utils/construct/config/attribute/validator.rb +55 -0
- data/lib/dev_suite/utils/construct/config/attribute.rb +13 -0
- data/lib/dev_suite/utils/construct/config/base.rb +25 -0
- data/lib/dev_suite/utils/construct/config/config.rb +16 -0
- data/lib/dev_suite/utils/construct/config/dependency_handler.rb +56 -0
- data/lib/dev_suite/utils/construct/config/hook/hook.rb +22 -0
- data/lib/dev_suite/utils/construct/config/hook/hook_registry.rb +24 -0
- data/lib/dev_suite/utils/construct/config/hook/hook_runner.rb +20 -0
- data/lib/dev_suite/utils/construct/config/hook/manager.rb +36 -0
- data/lib/dev_suite/utils/construct/config/hook.rb +13 -0
- data/lib/dev_suite/utils/construct/config/manager.rb +41 -0
- data/lib/dev_suite/utils/construct/config/settings/base.rb +59 -0
- data/lib/dev_suite/utils/construct/config/settings/manager.rb +38 -0
- data/lib/dev_suite/utils/construct/config/settings/settings.rb +14 -0
- data/lib/dev_suite/utils/construct/config/settings.rb +13 -0
- data/lib/dev_suite/utils/construct/config.rb +11 -0
- data/lib/dev_suite/utils/construct/construct.rb +10 -0
- data/lib/dev_suite/utils/construct.rb +16 -0
- data/lib/dev_suite/utils/dependency_loader.rb +71 -0
- data/lib/dev_suite/utils/emoji.rb +71 -0
- data/lib/dev_suite/utils/error_handler.rb +24 -0
- data/lib/dev_suite/utils/file_loader/config/config.rb +13 -0
- data/lib/dev_suite/utils/file_loader/config/configuration.rb +33 -0
- data/lib/dev_suite/utils/file_loader/config.rb +11 -0
- data/lib/dev_suite/utils/file_loader/file_loader.rb +23 -0
- data/lib/dev_suite/utils/file_loader/loader/base.rb +21 -0
- data/lib/dev_suite/utils/file_loader/loader/json.rb +21 -0
- data/lib/dev_suite/utils/file_loader/loader/loader.rb +41 -0
- data/lib/dev_suite/utils/file_loader/loader/text.rb +21 -0
- data/lib/dev_suite/utils/file_loader/loader/yaml.rb +38 -0
- data/lib/dev_suite/utils/file_loader/loader.rb +13 -0
- data/lib/dev_suite/utils/file_loader/loader_manager.rb +34 -0
- data/lib/dev_suite/utils/file_loader/loader_registry.rb +36 -0
- data/lib/dev_suite/utils/file_loader.rb +9 -0
- data/lib/dev_suite/utils/logger.rb +58 -0
- data/lib/dev_suite/utils/path_matcher/matcher.rb +31 -0
- data/lib/dev_suite/utils/path_matcher/path_matcher.rb +17 -0
- data/lib/dev_suite/utils/path_matcher/pattern.rb +35 -0
- data/lib/dev_suite/utils/path_matcher.rb +9 -0
- data/lib/dev_suite/utils/table/config/config.rb +13 -0
- data/lib/dev_suite/utils/table/config/configuration.rb +32 -0
- data/lib/dev_suite/utils/table/config.rb +2 -23
- data/lib/dev_suite/utils/table/formatter/formatter.rb +12 -0
- data/lib/dev_suite/utils/table/formatter.rb +1 -2
- data/lib/dev_suite/utils/table/renderer/base.rb +1 -7
- data/lib/dev_suite/utils/table/renderer/renderer.rb +16 -0
- data/lib/dev_suite/utils/table/renderer/simple.rb +9 -5
- data/lib/dev_suite/utils/table/renderer.rb +1 -13
- data/lib/dev_suite/utils/table/table.rb +6 -0
- data/lib/dev_suite/utils/table.rb +0 -6
- data/lib/dev_suite/utils/utils.rb +15 -0
- data/lib/dev_suite/utils.rb +1 -3
- data/lib/dev_suite/version.rb +3 -1
- data/lib/dev_suite.rb +1 -10
- metadata +101 -44
- data/lib/dev_suite/directory_tree/settings.rb +0 -18
- data/lib/dev_suite/emoji.rb +0 -33
- data/lib/dev_suite/error_handler.rb +0 -22
- data/lib/dev_suite/logger.rb +0 -56
- data/lib/dev_suite/performance/reportor.rb +0 -22
- data/lib/dev_suite/utils/config_tools/configuration.rb +0 -134
- data/lib/dev_suite/utils/config_tools/settings.rb +0 -67
- data/lib/dev_suite/utils/config_tools.rb +0 -10
- data/lib/dev_suite/utils/table/settings.rb +0 -34
|
@@ -3,21 +3,7 @@
|
|
|
3
3
|
module DevSuite
|
|
4
4
|
module DirectoryTree
|
|
5
5
|
module Visualizer
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
require_relative "visualizer/base"
|
|
9
|
-
require_relative "visualizer/tree"
|
|
10
|
-
|
|
11
|
-
class << self
|
|
12
|
-
def create(type)
|
|
13
|
-
case type
|
|
14
|
-
when :tree
|
|
15
|
-
Tree.new
|
|
16
|
-
else
|
|
17
|
-
raise ArgumentError, "Unknown renderer type: #{type}"
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
6
|
+
require_relative "visualizer/visualizer"
|
|
21
7
|
end
|
|
22
8
|
end
|
|
23
9
|
end
|
|
@@ -25,7 +25,7 @@ module DevSuite
|
|
|
25
25
|
# @param benchmark_result [Benchmark::Tms] The benchmark result
|
|
26
26
|
# @param memory_stats [Hash] The memory statistics
|
|
27
27
|
def generate_report(results)
|
|
28
|
-
Config.configuration.
|
|
28
|
+
Config.configuration.reporter.generate(
|
|
29
29
|
description: @description,
|
|
30
30
|
results: results,
|
|
31
31
|
)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DevSuite
|
|
4
|
+
module Performance
|
|
5
|
+
module Config
|
|
6
|
+
class Configuration < Utils::Construct::Config::Base
|
|
7
|
+
# Define configuration attributes
|
|
8
|
+
config_attr :profilers,
|
|
9
|
+
default_value: [:execution_time, :memory],
|
|
10
|
+
type: :array,
|
|
11
|
+
resolver: :resolve_profilers
|
|
12
|
+
|
|
13
|
+
config_attr :reporter,
|
|
14
|
+
default_value: :simple,
|
|
15
|
+
type: :symbol,
|
|
16
|
+
resolver: :resolve_reporter
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
def resolve_profilers(value)
|
|
21
|
+
Profiler.build_components(value)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def resolve_reporter(value)
|
|
25
|
+
Reporter.build_component(value)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -2,36 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
module DevSuite
|
|
4
4
|
module Performance
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
# Define configuration attributes
|
|
9
|
-
config_attr :profilers, default_value: [:execution_time, :memory]
|
|
10
|
-
config_attr :reportor, default_value: :simple
|
|
11
|
-
|
|
12
|
-
private
|
|
13
|
-
|
|
14
|
-
def validate_attr!(attr, value)
|
|
15
|
-
case attr
|
|
16
|
-
when :profilers
|
|
17
|
-
validate_array!(attr, value)
|
|
18
|
-
when :reportor
|
|
19
|
-
validate_symbol!(attr, value)
|
|
20
|
-
else
|
|
21
|
-
raise ArgumentError, "Invalid attribute: #{attr}"
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def resolve_attr(attr, value)
|
|
26
|
-
case attr
|
|
27
|
-
when :profilers
|
|
28
|
-
Profiler.create_multiple(value)
|
|
29
|
-
when :reportor
|
|
30
|
-
Reportor.create(value)
|
|
31
|
-
else
|
|
32
|
-
value
|
|
33
|
-
end
|
|
34
|
-
end
|
|
5
|
+
module Config
|
|
6
|
+
require_relative "config/config"
|
|
35
7
|
end
|
|
36
8
|
end
|
|
37
9
|
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DevSuite
|
|
4
|
+
module Performance
|
|
5
|
+
module Profiler
|
|
6
|
+
include Utils::Construct::Component::Manager
|
|
7
|
+
|
|
8
|
+
require_relative "base"
|
|
9
|
+
require_relative "execution_time"
|
|
10
|
+
require_relative "memory"
|
|
11
|
+
|
|
12
|
+
register_component(ExecutionTime)
|
|
13
|
+
register_component(Memory)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -3,26 +3,7 @@
|
|
|
3
3
|
module DevSuite
|
|
4
4
|
module Performance
|
|
5
5
|
module Profiler
|
|
6
|
-
require_relative "profiler/
|
|
7
|
-
require_relative "profiler/execution_time"
|
|
8
|
-
require_relative "profiler/memory"
|
|
9
|
-
|
|
10
|
-
class << self
|
|
11
|
-
def create(profiler)
|
|
12
|
-
case profiler
|
|
13
|
-
when :execution_time
|
|
14
|
-
ExecutionTime.new
|
|
15
|
-
when :memory
|
|
16
|
-
Memory.new
|
|
17
|
-
else
|
|
18
|
-
raise ArgumentError, "Invalid profiler: #{profiler}"
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def create_multiple(profilers)
|
|
23
|
-
profilers.map { |profiler| create(profiler) }
|
|
24
|
-
end
|
|
25
|
-
end
|
|
6
|
+
require_relative "profiler/profiler"
|
|
26
7
|
end
|
|
27
8
|
end
|
|
28
9
|
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DevSuite
|
|
4
|
+
module Performance
|
|
5
|
+
module Reporter
|
|
6
|
+
include Utils::Construct::Component::Manager
|
|
7
|
+
|
|
8
|
+
require_relative "base"
|
|
9
|
+
require_relative "simple"
|
|
10
|
+
require_relative "helpers"
|
|
11
|
+
|
|
12
|
+
register_component(Simple)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -8,7 +8,7 @@ module DevSuite
|
|
|
8
8
|
require_relative "performance/data"
|
|
9
9
|
require_relative "performance/profiler"
|
|
10
10
|
require_relative "performance/profiler_manager"
|
|
11
|
-
require_relative "performance/
|
|
11
|
+
require_relative "performance/reporter"
|
|
12
12
|
require_relative "performance/analyzer"
|
|
13
13
|
require_relative "performance/config"
|
|
14
14
|
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DevSuite
|
|
4
|
+
module RequestLogger
|
|
5
|
+
module Adapter
|
|
6
|
+
include Utils::Construct::Component::Manager
|
|
7
|
+
|
|
8
|
+
require_relative "base"
|
|
9
|
+
|
|
10
|
+
class << self
|
|
11
|
+
def handle_missing_dependencies(missing_dependencies)
|
|
12
|
+
Config.configuration.delete_option_on_failure(:adapters, :faraday, *missing_dependencies)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Load and register `net/http` adapter
|
|
17
|
+
require "net/http"
|
|
18
|
+
require_relative "net_http"
|
|
19
|
+
register_component(NetHttp)
|
|
20
|
+
|
|
21
|
+
# Load and register `faraday` adapter
|
|
22
|
+
Utils::DependencyLoader.safe_load_dependencies(
|
|
23
|
+
"faraday",
|
|
24
|
+
on_failure: method(:handle_missing_dependencies),
|
|
25
|
+
) do
|
|
26
|
+
require_relative "faraday"
|
|
27
|
+
register_component(Faraday)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DevSuite
|
|
4
|
+
module RequestLogger
|
|
5
|
+
module Adapter
|
|
6
|
+
class Base < Utils::Construct::Component::Base
|
|
7
|
+
def enable
|
|
8
|
+
raise NotImplementedError
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def disable
|
|
12
|
+
raise NotImplementedError
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DevSuite
|
|
4
|
+
module RequestLogger
|
|
5
|
+
module Adapter
|
|
6
|
+
require_relative "middleware/faraday"
|
|
7
|
+
|
|
8
|
+
class Faraday < Base
|
|
9
|
+
def enable
|
|
10
|
+
::Faraday::Connection.class_eval do
|
|
11
|
+
alias_method(:_original_run_request, :run_request)
|
|
12
|
+
|
|
13
|
+
def run_request(method, url, body, headers, &block)
|
|
14
|
+
env = ::Faraday::Env.new(method, url, body, headers)
|
|
15
|
+
env.request = @request
|
|
16
|
+
env.params = @params
|
|
17
|
+
env.request_body = @request_body
|
|
18
|
+
env.ssl = @ssl
|
|
19
|
+
env.response = @response
|
|
20
|
+
|
|
21
|
+
Middleware::Faraday.new(lambda do |e|
|
|
22
|
+
_original_run_request(e.method, e.url, e.body, e.request_headers, &block)
|
|
23
|
+
end).call(env)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def disable
|
|
29
|
+
::Faraday::Connection.class_eval do
|
|
30
|
+
alias_method(:run_request, :_original_run_request)
|
|
31
|
+
remove_method(:_original_run_request)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DevSuite
|
|
4
|
+
module RequestLogger
|
|
5
|
+
module Adapter
|
|
6
|
+
module Middleware
|
|
7
|
+
class Faraday < ::Faraday::Middleware
|
|
8
|
+
def call(env)
|
|
9
|
+
# Log the request details
|
|
10
|
+
Logger.log_request(self, env)
|
|
11
|
+
|
|
12
|
+
# Perform the actual request
|
|
13
|
+
@app.call(env).on_complete do |response_env|
|
|
14
|
+
# Log the response details
|
|
15
|
+
Logger.log_response(self, response_env)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DevSuite
|
|
4
|
+
module RequestLogger
|
|
5
|
+
module Adapter
|
|
6
|
+
class NetHttp < Base
|
|
7
|
+
# Enables the logging of Net::HTTP requests by monkey patching the request method
|
|
8
|
+
def enable
|
|
9
|
+
::Net::HTTP.class_eval do
|
|
10
|
+
# Alias the original request method with a unique name (_original_request)
|
|
11
|
+
# This preserves the original functionality so it can still be called after logging is added
|
|
12
|
+
alias_method(:_original_request, :request)
|
|
13
|
+
|
|
14
|
+
# Override the request method to add logging functionality
|
|
15
|
+
def request(request, body = nil, &block)
|
|
16
|
+
# Log the full URL of the HTTP request using the DevSuite::Utils::Logger
|
|
17
|
+
Logger.log_request(self, request)
|
|
18
|
+
|
|
19
|
+
# Call the original request method (now aliased as _original_request) to perform the actual HTTP request
|
|
20
|
+
response = _original_request(request, body, &block)
|
|
21
|
+
|
|
22
|
+
# Optionally log the response details
|
|
23
|
+
Logger.log_response(self, response)
|
|
24
|
+
|
|
25
|
+
# Return the response object so that the calling code receives the expected result
|
|
26
|
+
response
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Disables the logging by restoring the original Net::HTTP request method
|
|
32
|
+
def disable
|
|
33
|
+
::Net::HTTP.class_eval do
|
|
34
|
+
# Restore the original request method by aliasing it back from _original_request
|
|
35
|
+
# This effectively removes the logging functionality and returns Net::HTTP to its original state
|
|
36
|
+
alias_method(:request, :_original_request)
|
|
37
|
+
remove_method(:_original_request)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DevSuite
|
|
4
|
+
module RequestLogger
|
|
5
|
+
module Config
|
|
6
|
+
class Configuration < Utils::Construct::Config::Base
|
|
7
|
+
set_default_settings(
|
|
8
|
+
log_headers: true,
|
|
9
|
+
log_cookies: true,
|
|
10
|
+
log_body: true,
|
|
11
|
+
log_level: :debug,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
config_attr :adapters, default_value: [:net_http], type: :array, resolver: :resolve_adapters
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
|
|
18
|
+
def resolve_adapters(value)
|
|
19
|
+
Adapter.build_components(value)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DevSuite
|
|
4
|
+
module RequestLogger
|
|
5
|
+
module Extractor
|
|
6
|
+
class Base < Utils::Construct::Component::Base
|
|
7
|
+
def extract_request(native_request)
|
|
8
|
+
raise NotImplementedError
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def extract_response(native_response)
|
|
12
|
+
raise NotImplementedError
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DevSuite
|
|
4
|
+
module RequestLogger
|
|
5
|
+
module Extractor
|
|
6
|
+
include Utils::Construct::Component::Manager
|
|
7
|
+
|
|
8
|
+
require_relative "base"
|
|
9
|
+
require_relative "net_http"
|
|
10
|
+
|
|
11
|
+
register_component(NetHttp)
|
|
12
|
+
|
|
13
|
+
Utils::DependencyLoader.safe_load_dependencies(
|
|
14
|
+
"faraday",
|
|
15
|
+
on_failure: ->(_) {}, # Empty lambda to do nothing on failure
|
|
16
|
+
) do
|
|
17
|
+
require_relative "faraday"
|
|
18
|
+
register_component(Faraday)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DevSuite
|
|
4
|
+
module RequestLogger
|
|
5
|
+
module Extractor
|
|
6
|
+
class Faraday < Base
|
|
7
|
+
COMPONENT_KEY = ::Faraday::Middleware
|
|
8
|
+
|
|
9
|
+
def extract_request(native_request)
|
|
10
|
+
Request.new(
|
|
11
|
+
method: native_request.method.to_s.upcase,
|
|
12
|
+
url: native_request.url.to_s,
|
|
13
|
+
headers: native_request.request_headers.to_h,
|
|
14
|
+
cookies: extract_cookies(native_request.request_headers),
|
|
15
|
+
body: native_request.body,
|
|
16
|
+
)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def extract_response(native_response)
|
|
20
|
+
Response.new(
|
|
21
|
+
status: native_response.status,
|
|
22
|
+
message: native_response.reason_phrase || "",
|
|
23
|
+
headers: native_response.response_headers.to_h,
|
|
24
|
+
body: native_response.body,
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
def extract_cookies(headers)
|
|
31
|
+
headers = headers.to_h
|
|
32
|
+
headers["Cookie"] ? [headers["Cookie"]] : []
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DevSuite
|
|
4
|
+
module RequestLogger
|
|
5
|
+
module Extractor
|
|
6
|
+
class NetHttp < Base
|
|
7
|
+
COMPONENT_KEY = ::Net::HTTP
|
|
8
|
+
|
|
9
|
+
def extract_request(native_request)
|
|
10
|
+
Request.new(
|
|
11
|
+
method: native_request.method,
|
|
12
|
+
url: native_request.uri.to_s,
|
|
13
|
+
headers: native_request.each_header.to_h,
|
|
14
|
+
cookies: extract_cookies(native_request),
|
|
15
|
+
body: native_request.body,
|
|
16
|
+
)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def extract_response(native_response)
|
|
20
|
+
Response.new(
|
|
21
|
+
status: native_response.code.to_i,
|
|
22
|
+
message: native_response.message,
|
|
23
|
+
headers: native_response.each_header.to_h,
|
|
24
|
+
body: native_response.body,
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
def extract_cookies(request)
|
|
31
|
+
request.to_hash["cookie"] || []
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|