dev_suite 0.2.5 → 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 +4 -1
- data/Gemfile.lock +28 -2
- data/README.md +39 -31
- data/bin/rspec +27 -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 +1 -1
- data/lib/dev_suite/directory_tree/config/configuration.rb +18 -5
- data/lib/dev_suite/directory_tree/directory_tree.rb +0 -2
- 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 -1
- 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/config/config.rb +1 -1
- data/lib/dev_suite/performance/config/configuration.rb +3 -3
- 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/reporter/base.rb +1 -1
- data/lib/dev_suite/performance/reporter/reporter.rb +15 -0
- data/lib/dev_suite/performance/reporter.rb +1 -14
- data/lib/dev_suite/request_logger/adapter/adapter.rb +16 -12
- data/lib/dev_suite/request_logger/adapter/base.rb +1 -1
- 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 +1 -0
- data/lib/dev_suite/request_logger/adapter.rb +1 -1
- data/lib/dev_suite/request_logger/config/config.rb +1 -1
- data/lib/dev_suite/request_logger/config/configuration.rb +2 -2
- 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 +22 -28
- data/lib/dev_suite/request_logger/request.rb +19 -0
- data/lib/dev_suite/request_logger/request_logger.rb +3 -0
- data/lib/dev_suite/request_logger/response.rb +28 -0
- data/lib/dev_suite/utils/color/config/config.rb +1 -1
- data/lib/dev_suite/utils/color/config/configuration.rb +3 -3
- 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.rb +1 -19
- 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/{config/configuration.rb → component.rb} +2 -4
- 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 +12 -3
- data/lib/dev_suite/utils/construct/config/base.rb +7 -2
- data/lib/dev_suite/utils/construct/config/config.rb +2 -10
- data/lib/dev_suite/utils/construct/config/dependency_handler.rb +56 -0
- data/lib/dev_suite/utils/construct/config/hook/hook.rb +10 -1
- 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/manager.rb +25 -17
- data/lib/dev_suite/utils/construct/construct.rb +1 -0
- data/lib/dev_suite/utils/dependency_loader.rb +71 -0
- data/lib/dev_suite/utils/file_loader/config/config.rb +1 -1
- data/lib/dev_suite/utils/file_loader/config/configuration.rb +1 -1
- data/lib/dev_suite/utils/file_loader/loader/base.rb +1 -1
- data/lib/dev_suite/utils/file_loader/loader/loader.rb +41 -0
- data/lib/dev_suite/utils/file_loader/loader.rb +2 -30
- data/lib/dev_suite/utils/table/config/config.rb +1 -1
- data/lib/dev_suite/utils/table/config/configuration.rb +2 -2
- 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 -1
- data/lib/dev_suite/utils/table/renderer/renderer.rb +16 -0
- data/lib/dev_suite/utils/table/renderer.rb +1 -13
- data/lib/dev_suite/utils/utils.rb +1 -0
- data/lib/dev_suite/version.rb +3 -1
- metadata +39 -6
- data/lib/dev_suite/utils/construct/config/attribute/manager.rb +0 -63
- data/lib/dev_suite/utils/construct/config/attribute/resolver.rb +0 -31
- data/lib/dev_suite/utils/construct/config/initializer.rb +0 -21
|
@@ -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
|
|
@@ -3,20 +3,7 @@
|
|
|
3
3
|
module DevSuite
|
|
4
4
|
module Performance
|
|
5
5
|
module Reporter
|
|
6
|
-
require_relative "reporter/
|
|
7
|
-
require_relative "reporter/simple"
|
|
8
|
-
require_relative "reporter/helpers"
|
|
9
|
-
|
|
10
|
-
class << self
|
|
11
|
-
def create(reporter)
|
|
12
|
-
case reporter
|
|
13
|
-
when :simple
|
|
14
|
-
Simple.new
|
|
15
|
-
else
|
|
16
|
-
raise ArgumentError, "Invalid reporter: #{reporter}"
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
6
|
+
require_relative "reporter/reporter"
|
|
20
7
|
end
|
|
21
8
|
end
|
|
22
9
|
end
|
|
@@ -3,24 +3,28 @@
|
|
|
3
3
|
module DevSuite
|
|
4
4
|
module RequestLogger
|
|
5
5
|
module Adapter
|
|
6
|
-
|
|
6
|
+
include Utils::Construct::Component::Manager
|
|
7
7
|
|
|
8
8
|
require_relative "base"
|
|
9
|
-
require_relative "net_http"
|
|
10
9
|
|
|
11
10
|
class << self
|
|
12
|
-
def
|
|
13
|
-
|
|
14
|
-
when :net_http
|
|
15
|
-
NetHttp.new
|
|
16
|
-
else
|
|
17
|
-
raise ArgumentError, "Adapter not found: #{adapter}"
|
|
18
|
-
end
|
|
11
|
+
def handle_missing_dependencies(missing_dependencies)
|
|
12
|
+
Config.configuration.delete_option_on_failure(:adapters, :faraday, *missing_dependencies)
|
|
19
13
|
end
|
|
14
|
+
end
|
|
20
15
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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)
|
|
24
28
|
end
|
|
25
29
|
end
|
|
26
30
|
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
|
|
@@ -34,6 +34,7 @@ module DevSuite
|
|
|
34
34
|
# Restore the original request method by aliasing it back from _original_request
|
|
35
35
|
# This effectively removes the logging functionality and returns Net::HTTP to its original state
|
|
36
36
|
alias_method(:request, :_original_request)
|
|
37
|
+
remove_method(:_original_request)
|
|
37
38
|
end
|
|
38
39
|
end
|
|
39
40
|
end
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
module DevSuite
|
|
4
4
|
module RequestLogger
|
|
5
5
|
module Config
|
|
6
|
-
class Configuration <
|
|
6
|
+
class Configuration < Utils::Construct::Config::Base
|
|
7
7
|
set_default_settings(
|
|
8
8
|
log_headers: true,
|
|
9
9
|
log_cookies: true,
|
|
@@ -16,7 +16,7 @@ module DevSuite
|
|
|
16
16
|
private
|
|
17
17
|
|
|
18
18
|
def resolve_adapters(value)
|
|
19
|
-
Adapter.
|
|
19
|
+
Adapter.build_components(value)
|
|
20
20
|
end
|
|
21
21
|
end
|
|
22
22
|
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
|
|
@@ -4,18 +4,20 @@ module DevSuite
|
|
|
4
4
|
module RequestLogger
|
|
5
5
|
module Logger
|
|
6
6
|
class << self
|
|
7
|
-
def log_request(
|
|
8
|
-
|
|
7
|
+
def log_request(instance, request)
|
|
8
|
+
request = extract_request(instance, request)
|
|
9
|
+
log_entry(format_request_line(instance, request), :start)
|
|
9
10
|
log_headers(request) if settings.get(:log_headers)
|
|
10
11
|
log_cookies(request) if settings.get(:log_cookies)
|
|
11
12
|
log_body(request.body, "Request") if settings.get(:log_body)
|
|
12
13
|
end
|
|
13
14
|
|
|
14
|
-
def log_response(
|
|
15
|
+
def log_response(instance, response)
|
|
16
|
+
response = extract_response(instance, response)
|
|
15
17
|
status_emoji = determine_status_emoji(response)
|
|
16
18
|
log_level = determine_log_level(response)
|
|
17
19
|
|
|
18
|
-
log_entry(format_response_line(
|
|
20
|
+
log_entry(format_response_line(instance, response), status_emoji, log_level)
|
|
19
21
|
log_headers(response) if settings.get(:log_headers)
|
|
20
22
|
log_body(response.body, "Response") if settings.get(:log_body)
|
|
21
23
|
end
|
|
@@ -30,51 +32,43 @@ module DevSuite
|
|
|
30
32
|
config.settings
|
|
31
33
|
end
|
|
32
34
|
|
|
33
|
-
def
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
def determine_status_emoji(response)
|
|
38
|
-
response_success?(response) ? :success : :error
|
|
35
|
+
def extract_request(instance, request)
|
|
36
|
+
extractor = Extractor.build_component_from_instance(instance)
|
|
37
|
+
extractor.extract_request(request)
|
|
39
38
|
end
|
|
40
39
|
|
|
41
|
-
def
|
|
42
|
-
|
|
40
|
+
def extract_response(instance, response)
|
|
41
|
+
extractor = Extractor.build_component_from_instance(instance)
|
|
42
|
+
extractor.extract_response(response)
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
def
|
|
46
|
-
|
|
45
|
+
def log_entry(message, emoji, level = settings.get(:log_level))
|
|
46
|
+
Utils::Logger.log(message, level: level, emoji: emoji)
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
-
def
|
|
50
|
-
|
|
49
|
+
def determine_status_emoji(response)
|
|
50
|
+
response.success? ? :success : :error
|
|
51
51
|
end
|
|
52
52
|
|
|
53
|
-
def
|
|
54
|
-
|
|
55
|
-
request.to_hash["cookie"]
|
|
56
|
-
elsif request.respond_to?(:headers) && request.headers["Cookie"]
|
|
57
|
-
[request.headers["Cookie"]]
|
|
58
|
-
else
|
|
59
|
-
[]
|
|
60
|
-
end
|
|
53
|
+
def determine_log_level(response)
|
|
54
|
+
response.success? ? settings.get(:log_level) : :error
|
|
61
55
|
end
|
|
62
56
|
|
|
63
57
|
def format_request_line(adapter, request)
|
|
64
|
-
"#{adapter.class} Request: #{request.method} #{request.
|
|
58
|
+
"#{adapter.class} Request: #{request.method} #{request.url}"
|
|
65
59
|
end
|
|
66
60
|
|
|
67
61
|
def format_response_line(adapter, response)
|
|
68
|
-
"#{adapter.class} Response: #{response.
|
|
62
|
+
"#{adapter.class} Response: #{response.status} #{response.message}"
|
|
69
63
|
end
|
|
70
64
|
|
|
71
65
|
def log_headers(request)
|
|
72
|
-
headers =
|
|
66
|
+
headers = request.headers
|
|
73
67
|
log_entry("Headers: #{headers}", :document) unless headers.empty?
|
|
74
68
|
end
|
|
75
69
|
|
|
76
70
|
def log_cookies(request)
|
|
77
|
-
cookies =
|
|
71
|
+
cookies = request.cookies
|
|
78
72
|
if cookies.any?
|
|
79
73
|
log_entry("Cookies: #{cookies.join("; ")}", :cookie)
|
|
80
74
|
else
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# request_logger/request.rb
|
|
4
|
+
|
|
5
|
+
module DevSuite
|
|
6
|
+
module RequestLogger
|
|
7
|
+
class Request
|
|
8
|
+
attr_reader :method, :url, :headers, :cookies, :body
|
|
9
|
+
|
|
10
|
+
def initialize(method:, url:, headers:, cookies:, body:)
|
|
11
|
+
@method = method
|
|
12
|
+
@url = url
|
|
13
|
+
@headers = headers
|
|
14
|
+
@cookies = cookies
|
|
15
|
+
@body = body
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
module DevSuite
|
|
4
4
|
module RequestLogger
|
|
5
|
+
require_relative "request"
|
|
6
|
+
require_relative "response"
|
|
5
7
|
require_relative "config"
|
|
6
8
|
require_relative "adapter"
|
|
7
9
|
require_relative "logger"
|
|
10
|
+
require_relative "extractor"
|
|
8
11
|
|
|
9
12
|
class << self
|
|
10
13
|
def with_logging(&block)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# request_logger/response.rb
|
|
4
|
+
|
|
5
|
+
module DevSuite
|
|
6
|
+
module RequestLogger
|
|
7
|
+
class Response
|
|
8
|
+
attr_reader :status, :message, :headers, :body
|
|
9
|
+
|
|
10
|
+
def initialize(status:, message:, headers:, body:)
|
|
11
|
+
@status = status.to_i # Ensure status is always an integer
|
|
12
|
+
@message = message
|
|
13
|
+
@headers = headers || {} # Default to an empty hash if headers are nil
|
|
14
|
+
@body = body || "" # Default to an empty string if body is nil
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Check if the response is successful (2xx status codes)
|
|
18
|
+
def success?
|
|
19
|
+
status.between?(200, 299)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Helper method to fetch specific headers in a case-insensitive way
|
|
23
|
+
def header(key)
|
|
24
|
+
headers[key.to_s.downcase] || headers[key.to_s]
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -4,7 +4,7 @@ module DevSuite
|
|
|
4
4
|
module Utils
|
|
5
5
|
module Color
|
|
6
6
|
module Config
|
|
7
|
-
class Configuration <
|
|
7
|
+
class Configuration < Utils::Construct::Config::Base
|
|
8
8
|
config_attr :strategy,
|
|
9
9
|
default_value: :theme,
|
|
10
10
|
type: :symbol,
|
|
@@ -18,11 +18,11 @@ module DevSuite
|
|
|
18
18
|
private
|
|
19
19
|
|
|
20
20
|
def resolve_strategy(value)
|
|
21
|
-
Strategy.
|
|
21
|
+
Strategy.build_component(value)
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
def resolve_palette(value)
|
|
25
|
-
Palette.
|
|
25
|
+
Palette.build_component(value)
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
28
|
end
|
|
@@ -4,20 +4,7 @@ module DevSuite
|
|
|
4
4
|
module Utils
|
|
5
5
|
module Color
|
|
6
6
|
module Palette
|
|
7
|
-
class Base
|
|
8
|
-
# Define COLORS constant in subclass
|
|
9
|
-
# Example:
|
|
10
|
-
# COLORS = {
|
|
11
|
-
# red: 31,
|
|
12
|
-
# green: 32,
|
|
13
|
-
# yellow: 33,
|
|
14
|
-
# blue: 34,
|
|
15
|
-
# pink: 35,
|
|
16
|
-
# light_blue: 36,
|
|
17
|
-
# white: 37
|
|
18
|
-
# }
|
|
19
|
-
#
|
|
20
|
-
|
|
7
|
+
class Base < Utils::Construct::Component::Base
|
|
21
8
|
def colors
|
|
22
9
|
unless self.class.const_defined?(:COLORS)
|
|
23
10
|
raise NotImplementedError, "#{self.class} must define COLORS constant"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DevSuite
|
|
4
|
+
module Utils
|
|
5
|
+
module Color
|
|
6
|
+
module Palette
|
|
7
|
+
include Construct::Component::Manager
|
|
8
|
+
|
|
9
|
+
require_relative "base"
|
|
10
|
+
require_relative "default"
|
|
11
|
+
|
|
12
|
+
register_component(Default)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -4,19 +4,7 @@ module DevSuite
|
|
|
4
4
|
module Utils
|
|
5
5
|
module Color
|
|
6
6
|
module Palette
|
|
7
|
-
require_relative "palette/
|
|
8
|
-
require_relative "palette/default"
|
|
9
|
-
|
|
10
|
-
class << self
|
|
11
|
-
def create(type)
|
|
12
|
-
case type
|
|
13
|
-
when :default
|
|
14
|
-
Default.new
|
|
15
|
-
else
|
|
16
|
-
raise ArgumentError, "Unknown palette type: #{type}"
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
7
|
+
require_relative "palette/palette"
|
|
20
8
|
end
|
|
21
9
|
end
|
|
22
10
|
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DevSuite
|
|
4
|
+
module Utils
|
|
5
|
+
module Color
|
|
6
|
+
module Strategy
|
|
7
|
+
include Construct::Component::Manager
|
|
8
|
+
|
|
9
|
+
require_relative "base"
|
|
10
|
+
require_relative "basic"
|
|
11
|
+
require_relative "rgb"
|
|
12
|
+
require_relative "theme"
|
|
13
|
+
|
|
14
|
+
register_component(Basic)
|
|
15
|
+
register_component(Rgb)
|
|
16
|
+
register_component(Theme)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|