logstruct 0.1.2 → 0.1.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.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -1
  3. data/README.md +4 -6
  4. data/lib/log_struct/concerns/configuration.rb +2 -2
  5. data/lib/log_struct/config_struct/integrations.rb +5 -0
  6. data/lib/log_struct/enums/log_field.rb +12 -1
  7. data/lib/log_struct/integrations/action_mailer/error_handling.rb +121 -27
  8. data/lib/log_struct/integrations/action_mailer/event_logging.rb +30 -14
  9. data/lib/log_struct/integrations/action_mailer/metadata_collection.rb +18 -24
  10. data/lib/log_struct/integrations/action_mailer.rb +13 -6
  11. data/lib/log_struct/integrations/active_job/log_subscriber.rb +2 -2
  12. data/lib/log_struct/integrations/active_storage.rb +8 -8
  13. data/lib/log_struct/integrations/ahoy.rb +2 -3
  14. data/lib/log_struct/integrations/carrierwave.rb +8 -10
  15. data/lib/log_struct/integrations/good_job/log_subscriber.rb +5 -5
  16. data/lib/log_struct/integrations/good_job/logger.rb +2 -6
  17. data/lib/log_struct/integrations/good_job.rb +1 -1
  18. data/lib/log_struct/integrations/host_authorization.rb +27 -36
  19. data/lib/log_struct/integrations/lograge.rb +1 -1
  20. data/lib/log_struct/integrations/shrine.rb +21 -24
  21. data/lib/log_struct/integrations/sidekiq/logger.rb +8 -1
  22. data/lib/log_struct/log/action_mailer/delivered.rb +14 -49
  23. data/lib/log_struct/log/action_mailer/delivery.rb +14 -49
  24. data/lib/log_struct/log/action_mailer/error.rb +72 -0
  25. data/lib/log_struct/log/action_mailer.rb +15 -2
  26. data/lib/log_struct/log/active_job/enqueue.rb +9 -73
  27. data/lib/log_struct/log/active_job/finish.rb +9 -76
  28. data/lib/log_struct/log/active_job/schedule.rb +9 -73
  29. data/lib/log_struct/log/active_job/start.rb +9 -76
  30. data/lib/log_struct/log/active_job.rb +2 -2
  31. data/lib/log_struct/log/active_model_serializers.rb +5 -45
  32. data/lib/log_struct/log/active_storage/delete.rb +8 -46
  33. data/lib/log_struct/log/active_storage/download.rb +9 -55
  34. data/lib/log_struct/log/active_storage/exist.rb +9 -49
  35. data/lib/log_struct/log/active_storage/metadata.rb +9 -49
  36. data/lib/log_struct/log/active_storage/stream.rb +9 -49
  37. data/lib/log_struct/log/active_storage/upload.rb +9 -64
  38. data/lib/log_struct/log/active_storage/url.rb +9 -49
  39. data/lib/log_struct/log/active_storage.rb +2 -2
  40. data/lib/log_struct/log/ahoy.rb +5 -43
  41. data/lib/log_struct/log/carrierwave/delete.rb +15 -69
  42. data/lib/log_struct/log/carrierwave/download.rb +15 -77
  43. data/lib/log_struct/log/carrierwave/upload.rb +15 -83
  44. data/lib/log_struct/log/carrierwave.rb +13 -4
  45. data/lib/log_struct/log/dotenv/load.rb +5 -33
  46. data/lib/log_struct/log/dotenv/restore.rb +5 -33
  47. data/lib/log_struct/log/dotenv/save.rb +5 -33
  48. data/lib/log_struct/log/dotenv/update.rb +5 -33
  49. data/lib/log_struct/log/error.rb +7 -40
  50. data/lib/log_struct/log/good_job/enqueue.rb +9 -72
  51. data/lib/log_struct/log/good_job/error.rb +9 -89
  52. data/lib/log_struct/log/good_job/finish.rb +9 -78
  53. data/lib/log_struct/log/good_job/log.rb +11 -75
  54. data/lib/log_struct/log/good_job/schedule.rb +7 -78
  55. data/lib/log_struct/log/good_job/start.rb +7 -78
  56. data/lib/log_struct/log/good_job.rb +2 -2
  57. data/lib/log_struct/log/plain.rb +5 -32
  58. data/lib/log_struct/log/puma/shutdown.rb +5 -32
  59. data/lib/log_struct/log/puma/start.rb +5 -56
  60. data/lib/log_struct/log/request.rb +7 -90
  61. data/lib/log_struct/log/security/blocked_host.rb +12 -73
  62. data/lib/log_struct/log/security/csrf_violation.rb +6 -67
  63. data/lib/log_struct/log/security/ip_spoof.rb +6 -73
  64. data/lib/log_struct/log/shrine/delete.rb +6 -41
  65. data/lib/log_struct/log/shrine/download.rb +6 -44
  66. data/lib/log_struct/log/shrine/exist.rb +6 -44
  67. data/lib/log_struct/log/shrine/metadata.rb +8 -46
  68. data/lib/log_struct/log/shrine/upload.rb +6 -53
  69. data/lib/log_struct/log/sidekiq.rb +5 -42
  70. data/lib/log_struct/log/sql.rb +5 -65
  71. data/lib/log_struct/log.rb +2 -2
  72. data/lib/log_struct/monkey_patches/active_support/tagged_logging/formatter.rb +12 -1
  73. data/lib/log_struct/railtie.rb +0 -22
  74. data/lib/log_struct/semantic_logger/concerns/log_methods.rb +100 -0
  75. data/lib/log_struct/semantic_logger/logger.rb +46 -15
  76. data/lib/log_struct/semantic_logger/setup.rb +11 -7
  77. data/lib/log_struct/shared/{shared/add_request_fields.rb → add_request_fields.rb} +2 -2
  78. data/lib/log_struct/shared/{shared/merge_additional_data_fields.rb → merge_additional_data_fields.rb} +1 -1
  79. data/lib/log_struct/shared/{shared/serialize_common.rb → serialize_common.rb} +9 -3
  80. data/lib/log_struct/{log/shared → shared}/serialize_common_public.rb +2 -2
  81. data/lib/log_struct/version.rb +1 -1
  82. data/lib/log_struct.rb +4 -1
  83. data/logstruct.gemspec +1 -1
  84. metadata +9 -11
  85. data/lib/log_struct/integrations/action_mailer/callbacks.rb +0 -100
  86. data/lib/log_struct/log/shared/add_request_fields.rb +0 -4
  87. data/lib/log_struct/log/shared/merge_additional_data_fields.rb +0 -4
  88. data/lib/log_struct/log/shared/serialize_common.rb +0 -4
@@ -9,9 +9,9 @@
9
9
  require "log_struct/shared/interfaces/common_fields"
10
10
  require "log_struct/shared/interfaces/additional_data_field"
11
11
  require "log_struct/shared/interfaces/request_fields"
12
- require "log_struct/shared/shared/serialize_common"
13
- require "log_struct/shared/shared/merge_additional_data_fields"
14
- require "log_struct/shared/shared/add_request_fields"
12
+ require "log_struct/shared/serialize_common"
13
+ require "log_struct/shared/merge_additional_data_fields"
14
+ require "log_struct/shared/add_request_fields"
15
15
  require_relative "../../enums/source"
16
16
  require_relative "../../enums/event"
17
17
  require_relative "../../enums/level"
@@ -21,11 +21,6 @@ module LogStruct
21
21
  module Log
22
22
  class Security
23
23
  class BlockedHost < T::Struct
24
- # typed: strict
25
- # frozen_string_literal: true
26
-
27
- extend T::Sig
28
-
29
24
  extend T::Sig
30
25
 
31
26
  # Shared/common fields
@@ -45,6 +40,9 @@ module LogStruct
45
40
  const :message, T.nilable(String), default: nil
46
41
  const :blocked_host, T.nilable(String), default: nil
47
42
  const :blocked_hosts, T.nilable(T::Array[String]), default: nil
43
+ const :x_forwarded_for, T.nilable(String), default: nil
44
+ const :allowed_hosts, T.nilable(T::Array[String]), default: nil
45
+ const :allow_ip_hosts, T.nilable(T::Boolean), default: nil
48
46
 
49
47
  # Additional data
50
48
  include LogStruct::Log::Interfaces::AdditionalDataField
@@ -59,82 +57,23 @@ module LogStruct
59
57
  include LogStruct::Log::Shared::SerializeCommon
60
58
  include LogStruct::Log::Shared::AddRequestFields
61
59
 
62
- sig {
63
- params(path: T.untyped,
64
- http_method: T.untyped,
65
- source_ip: T.untyped,
66
- user_agent: T.untyped,
67
- referer: T.untyped,
68
- request_id: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
69
- }
70
- def self.base_hash(path: nil,
71
- http_method: nil,
72
- source_ip: nil,
73
- user_agent: nil,
74
- referer: nil,
75
- request_id: nil)
76
- h = {}
60
+ sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
61
+ def to_h
62
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
77
63
  h[LogField::Path] = path unless path.nil?
78
64
  h[LogField::HttpMethod] = http_method unless http_method.nil?
79
65
  h[LogField::SourceIp] = source_ip unless source_ip.nil?
80
66
  h[LogField::UserAgent] = user_agent unless user_agent.nil?
81
67
  h[LogField::Referer] = referer unless referer.nil?
82
68
  h[LogField::RequestId] = request_id unless request_id.nil?
83
- h
84
- end
85
-
86
- sig {
87
- params(path: T.untyped,
88
- http_method: T.untyped,
89
- source_ip: T.untyped,
90
- user_agent: T.untyped,
91
- referer: T.untyped,
92
- request_id: T.untyped,
93
- message: T.untyped,
94
- blocked_host: T.untyped,
95
- blocked_hosts: T.untyped,
96
- additional_data: T.untyped,
97
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
98
- }
99
- def self.build(path: nil,
100
- http_method: nil,
101
- source_ip: nil,
102
- user_agent: nil,
103
- referer: nil,
104
- request_id: nil,
105
- message: nil,
106
- blocked_host: nil,
107
- blocked_hosts: nil,
108
- additional_data: nil,
109
- timestamp: Time.now)
110
- h = base_hash(path: path,
111
- http_method: http_method,
112
- source_ip: source_ip,
113
- user_agent: user_agent,
114
- referer: referer,
115
- request_id: request_id)
116
69
  h[LogField::Message] = message unless message.nil?
117
70
  h[LogField::BlockedHost] = blocked_host unless blocked_host.nil?
118
71
  h[LogField::BlockedHosts] = blocked_hosts unless blocked_hosts.nil?
72
+ h[LogField::XForwardedFor] = x_forwarded_for unless x_forwarded_for.nil?
73
+ h[LogField::AllowedHosts] = allowed_hosts unless allowed_hosts.nil?
74
+ h[LogField::AllowIpHosts] = allow_ip_hosts unless allow_ip_hosts.nil?
119
75
  h
120
76
  end
121
-
122
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
123
- def to_h
124
- self.class.build(
125
- path: path,
126
- http_method: http_method,
127
- source_ip: source_ip,
128
- user_agent: user_agent,
129
- referer: referer,
130
- request_id: request_id,
131
- message: message,
132
- blocked_host: blocked_host,
133
- blocked_hosts: blocked_hosts,
134
- additional_data: additional_data,
135
- timestamp: timestamp
136
- )
137
- end
138
77
  end
139
78
  end
140
79
  end
@@ -9,9 +9,9 @@
9
9
  require "log_struct/shared/interfaces/common_fields"
10
10
  require "log_struct/shared/interfaces/additional_data_field"
11
11
  require "log_struct/shared/interfaces/request_fields"
12
- require "log_struct/shared/shared/serialize_common"
13
- require "log_struct/shared/shared/merge_additional_data_fields"
14
- require "log_struct/shared/shared/add_request_fields"
12
+ require "log_struct/shared/serialize_common"
13
+ require "log_struct/shared/merge_additional_data_fields"
14
+ require "log_struct/shared/add_request_fields"
15
15
  require_relative "../../enums/source"
16
16
  require_relative "../../enums/event"
17
17
  require_relative "../../enums/level"
@@ -21,11 +21,6 @@ module LogStruct
21
21
  module Log
22
22
  class Security
23
23
  class CSRFViolation < T::Struct
24
- # typed: strict
25
- # frozen_string_literal: true
26
-
27
- extend T::Sig
28
-
29
24
  extend T::Sig
30
25
 
31
26
  # Shared/common fields
@@ -57,74 +52,18 @@ module LogStruct
57
52
  include LogStruct::Log::Shared::SerializeCommon
58
53
  include LogStruct::Log::Shared::AddRequestFields
59
54
 
60
- sig {
61
- params(path: T.untyped,
62
- http_method: T.untyped,
63
- source_ip: T.untyped,
64
- user_agent: T.untyped,
65
- referer: T.untyped,
66
- request_id: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
67
- }
68
- def self.base_hash(path: nil,
69
- http_method: nil,
70
- source_ip: nil,
71
- user_agent: nil,
72
- referer: nil,
73
- request_id: nil)
74
- h = {}
55
+ sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
56
+ def to_h
57
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
75
58
  h[LogField::Path] = path unless path.nil?
76
59
  h[LogField::HttpMethod] = http_method unless http_method.nil?
77
60
  h[LogField::SourceIp] = source_ip unless source_ip.nil?
78
61
  h[LogField::UserAgent] = user_agent unless user_agent.nil?
79
62
  h[LogField::Referer] = referer unless referer.nil?
80
63
  h[LogField::RequestId] = request_id unless request_id.nil?
81
- h
82
- end
83
-
84
- sig {
85
- params(path: T.untyped,
86
- http_method: T.untyped,
87
- source_ip: T.untyped,
88
- user_agent: T.untyped,
89
- referer: T.untyped,
90
- request_id: T.untyped,
91
- message: T.untyped,
92
- additional_data: T.untyped,
93
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
94
- }
95
- def self.build(path: nil,
96
- http_method: nil,
97
- source_ip: nil,
98
- user_agent: nil,
99
- referer: nil,
100
- request_id: nil,
101
- message: nil,
102
- additional_data: nil,
103
- timestamp: Time.now)
104
- h = base_hash(path: path,
105
- http_method: http_method,
106
- source_ip: source_ip,
107
- user_agent: user_agent,
108
- referer: referer,
109
- request_id: request_id)
110
64
  h[LogField::Message] = message unless message.nil?
111
65
  h
112
66
  end
113
-
114
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
115
- def to_h
116
- self.class.build(
117
- path: path,
118
- http_method: http_method,
119
- source_ip: source_ip,
120
- user_agent: user_agent,
121
- referer: referer,
122
- request_id: request_id,
123
- message: message,
124
- additional_data: additional_data,
125
- timestamp: timestamp
126
- )
127
- end
128
67
  end
129
68
  end
130
69
  end
@@ -9,9 +9,9 @@
9
9
  require "log_struct/shared/interfaces/common_fields"
10
10
  require "log_struct/shared/interfaces/additional_data_field"
11
11
  require "log_struct/shared/interfaces/request_fields"
12
- require "log_struct/shared/shared/serialize_common"
13
- require "log_struct/shared/shared/merge_additional_data_fields"
14
- require "log_struct/shared/shared/add_request_fields"
12
+ require "log_struct/shared/serialize_common"
13
+ require "log_struct/shared/merge_additional_data_fields"
14
+ require "log_struct/shared/add_request_fields"
15
15
  require_relative "../../enums/source"
16
16
  require_relative "../../enums/event"
17
17
  require_relative "../../enums/level"
@@ -21,11 +21,6 @@ module LogStruct
21
21
  module Log
22
22
  class Security
23
23
  class IPSpoof < T::Struct
24
- # typed: strict
25
- # frozen_string_literal: true
26
-
27
- extend T::Sig
28
-
29
24
  extend T::Sig
30
25
 
31
26
  # Shared/common fields
@@ -59,82 +54,20 @@ module LogStruct
59
54
  include LogStruct::Log::Shared::SerializeCommon
60
55
  include LogStruct::Log::Shared::AddRequestFields
61
56
 
62
- sig {
63
- params(path: T.untyped,
64
- http_method: T.untyped,
65
- source_ip: T.untyped,
66
- user_agent: T.untyped,
67
- referer: T.untyped,
68
- request_id: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
69
- }
70
- def self.base_hash(path: nil,
71
- http_method: nil,
72
- source_ip: nil,
73
- user_agent: nil,
74
- referer: nil,
75
- request_id: nil)
76
- h = {}
57
+ sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
58
+ def to_h
59
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
77
60
  h[LogField::Path] = path unless path.nil?
78
61
  h[LogField::HttpMethod] = http_method unless http_method.nil?
79
62
  h[LogField::SourceIp] = source_ip unless source_ip.nil?
80
63
  h[LogField::UserAgent] = user_agent unless user_agent.nil?
81
64
  h[LogField::Referer] = referer unless referer.nil?
82
65
  h[LogField::RequestId] = request_id unless request_id.nil?
83
- h
84
- end
85
-
86
- sig {
87
- params(path: T.untyped,
88
- http_method: T.untyped,
89
- source_ip: T.untyped,
90
- user_agent: T.untyped,
91
- referer: T.untyped,
92
- request_id: T.untyped,
93
- message: T.untyped,
94
- client_ip: T.untyped,
95
- x_forwarded_for: T.untyped,
96
- additional_data: T.untyped,
97
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
98
- }
99
- def self.build(path: nil,
100
- http_method: nil,
101
- source_ip: nil,
102
- user_agent: nil,
103
- referer: nil,
104
- request_id: nil,
105
- message: nil,
106
- client_ip: nil,
107
- x_forwarded_for: nil,
108
- additional_data: nil,
109
- timestamp: Time.now)
110
- h = base_hash(path: path,
111
- http_method: http_method,
112
- source_ip: source_ip,
113
- user_agent: user_agent,
114
- referer: referer,
115
- request_id: request_id)
116
66
  h[LogField::Message] = message unless message.nil?
117
67
  h[LogField::ClientIp] = client_ip unless client_ip.nil?
118
68
  h[LogField::XForwardedFor] = x_forwarded_for unless x_forwarded_for.nil?
119
69
  h
120
70
  end
121
-
122
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
123
- def to_h
124
- self.class.build(
125
- path: path,
126
- http_method: http_method,
127
- source_ip: source_ip,
128
- user_agent: user_agent,
129
- referer: referer,
130
- request_id: request_id,
131
- message: message,
132
- client_ip: client_ip,
133
- x_forwarded_for: x_forwarded_for,
134
- additional_data: additional_data,
135
- timestamp: timestamp
136
- )
137
- end
138
71
  end
139
72
  end
140
73
  end
@@ -9,9 +9,9 @@
9
9
  require "log_struct/shared/interfaces/common_fields"
10
10
  require "log_struct/shared/interfaces/additional_data_field"
11
11
  require "log_struct/shared/interfaces/request_fields"
12
- require "log_struct/shared/shared/serialize_common"
13
- require "log_struct/shared/shared/merge_additional_data_fields"
14
- require "log_struct/shared/shared/add_request_fields"
12
+ require "log_struct/shared/serialize_common"
13
+ require "log_struct/shared/merge_additional_data_fields"
14
+ require "log_struct/shared/add_request_fields"
15
15
  require_relative "../../enums/source"
16
16
  require_relative "../../enums/event"
17
17
  require_relative "../../enums/level"
@@ -21,11 +21,6 @@ module LogStruct
21
21
  module Log
22
22
  class Shrine
23
23
  class Delete < T::Struct
24
- # typed: strict
25
- # frozen_string_literal: true
26
-
27
- extend T::Sig
28
-
29
24
  extend T::Sig
30
25
 
31
26
  # Shared/common fields
@@ -35,50 +30,20 @@ module LogStruct
35
30
  const :level, Level, default: Level::Info
36
31
 
37
32
  # Event-specific fields
38
- const :storage, String
33
+ const :storage, Symbol
39
34
  const :location, String
40
35
 
41
- # Additional data
42
- include LogStruct::Log::Interfaces::AdditionalDataField
43
- const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
44
- include LogStruct::Log::Shared::MergeAdditionalDataFields
45
-
46
- # Request fields (optional)
47
-
48
36
  # Serialize shared fields
49
37
  include LogStruct::Log::Interfaces::CommonFields
50
38
  include LogStruct::Log::Shared::SerializeCommon
51
39
 
52
40
  sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
53
- def self.base_hash
54
- {}
55
- end
56
-
57
- sig {
58
- params(storage: T.untyped,
59
- location: T.untyped,
60
- additional_data: T.untyped,
61
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
62
- }
63
- def self.build(storage:,
64
- location:,
65
- additional_data: nil,
66
- timestamp: Time.now)
67
- h = base_hash
41
+ def to_h
42
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
68
43
  h[LogField::Storage] = storage
69
44
  h[LogField::Location] = location
70
45
  h
71
46
  end
72
-
73
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
74
- def to_h
75
- self.class.build(
76
- storage: storage,
77
- location: location,
78
- additional_data: additional_data,
79
- timestamp: timestamp
80
- )
81
- end
82
47
  end
83
48
  end
84
49
  end
@@ -9,9 +9,9 @@
9
9
  require "log_struct/shared/interfaces/common_fields"
10
10
  require "log_struct/shared/interfaces/additional_data_field"
11
11
  require "log_struct/shared/interfaces/request_fields"
12
- require "log_struct/shared/shared/serialize_common"
13
- require "log_struct/shared/shared/merge_additional_data_fields"
14
- require "log_struct/shared/shared/add_request_fields"
12
+ require "log_struct/shared/serialize_common"
13
+ require "log_struct/shared/merge_additional_data_fields"
14
+ require "log_struct/shared/add_request_fields"
15
15
  require_relative "../../enums/source"
16
16
  require_relative "../../enums/event"
17
17
  require_relative "../../enums/level"
@@ -21,11 +21,6 @@ module LogStruct
21
21
  module Log
22
22
  class Shrine
23
23
  class Download < T::Struct
24
- # typed: strict
25
- # frozen_string_literal: true
26
-
27
- extend T::Sig
28
-
29
24
  extend T::Sig
30
25
 
31
26
  # Shared/common fields
@@ -35,55 +30,22 @@ module LogStruct
35
30
  const :level, Level, default: Level::Info
36
31
 
37
32
  # Event-specific fields
38
- const :storage, String
33
+ const :storage, Symbol
39
34
  const :location, String
40
35
  const :download_options, T.nilable(T::Hash[Symbol, T.untyped]), default: nil
41
36
 
42
- # Additional data
43
- include LogStruct::Log::Interfaces::AdditionalDataField
44
- const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
45
- include LogStruct::Log::Shared::MergeAdditionalDataFields
46
-
47
- # Request fields (optional)
48
-
49
37
  # Serialize shared fields
50
38
  include LogStruct::Log::Interfaces::CommonFields
51
39
  include LogStruct::Log::Shared::SerializeCommon
52
40
 
53
41
  sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
54
- def self.base_hash
55
- {}
56
- end
57
-
58
- sig {
59
- params(storage: T.untyped,
60
- location: T.untyped,
61
- download_options: T.untyped,
62
- additional_data: T.untyped,
63
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
64
- }
65
- def self.build(storage:,
66
- location:,
67
- download_options: nil,
68
- additional_data: nil,
69
- timestamp: Time.now)
70
- h = base_hash
42
+ def to_h
43
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
71
44
  h[LogField::Storage] = storage
72
45
  h[LogField::Location] = location
73
46
  h[LogField::DownloadOptions] = download_options unless download_options.nil?
74
47
  h
75
48
  end
76
-
77
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
78
- def to_h
79
- self.class.build(
80
- storage: storage,
81
- location: location,
82
- download_options: download_options,
83
- additional_data: additional_data,
84
- timestamp: timestamp
85
- )
86
- end
87
49
  end
88
50
  end
89
51
  end
@@ -9,9 +9,9 @@
9
9
  require "log_struct/shared/interfaces/common_fields"
10
10
  require "log_struct/shared/interfaces/additional_data_field"
11
11
  require "log_struct/shared/interfaces/request_fields"
12
- require "log_struct/shared/shared/serialize_common"
13
- require "log_struct/shared/shared/merge_additional_data_fields"
14
- require "log_struct/shared/shared/add_request_fields"
12
+ require "log_struct/shared/serialize_common"
13
+ require "log_struct/shared/merge_additional_data_fields"
14
+ require "log_struct/shared/add_request_fields"
15
15
  require_relative "../../enums/source"
16
16
  require_relative "../../enums/event"
17
17
  require_relative "../../enums/level"
@@ -21,11 +21,6 @@ module LogStruct
21
21
  module Log
22
22
  class Shrine
23
23
  class Exist < T::Struct
24
- # typed: strict
25
- # frozen_string_literal: true
26
-
27
- extend T::Sig
28
-
29
24
  extend T::Sig
30
25
 
31
26
  # Shared/common fields
@@ -35,55 +30,22 @@ module LogStruct
35
30
  const :level, Level, default: Level::Info
36
31
 
37
32
  # Event-specific fields
38
- const :storage, String
33
+ const :storage, Symbol
39
34
  const :location, String
40
35
  const :exist, T.nilable(T::Boolean), default: nil
41
36
 
42
- # Additional data
43
- include LogStruct::Log::Interfaces::AdditionalDataField
44
- const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
45
- include LogStruct::Log::Shared::MergeAdditionalDataFields
46
-
47
- # Request fields (optional)
48
-
49
37
  # Serialize shared fields
50
38
  include LogStruct::Log::Interfaces::CommonFields
51
39
  include LogStruct::Log::Shared::SerializeCommon
52
40
 
53
41
  sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
54
- def self.base_hash
55
- {}
56
- end
57
-
58
- sig {
59
- params(storage: T.untyped,
60
- location: T.untyped,
61
- exist: T.untyped,
62
- additional_data: T.untyped,
63
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
64
- }
65
- def self.build(storage:,
66
- location:,
67
- exist: nil,
68
- additional_data: nil,
69
- timestamp: Time.now)
70
- h = base_hash
42
+ def to_h
43
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
71
44
  h[LogField::Storage] = storage
72
45
  h[LogField::Location] = location
73
46
  h[LogField::Exist] = exist unless exist.nil?
74
47
  h
75
48
  end
76
-
77
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
78
- def to_h
79
- self.class.build(
80
- storage: storage,
81
- location: location,
82
- exist: exist,
83
- additional_data: additional_data,
84
- timestamp: timestamp
85
- )
86
- end
87
49
  end
88
50
  end
89
51
  end
@@ -9,9 +9,9 @@
9
9
  require "log_struct/shared/interfaces/common_fields"
10
10
  require "log_struct/shared/interfaces/additional_data_field"
11
11
  require "log_struct/shared/interfaces/request_fields"
12
- require "log_struct/shared/shared/serialize_common"
13
- require "log_struct/shared/shared/merge_additional_data_fields"
14
- require "log_struct/shared/shared/add_request_fields"
12
+ require "log_struct/shared/serialize_common"
13
+ require "log_struct/shared/merge_additional_data_fields"
14
+ require "log_struct/shared/add_request_fields"
15
15
  require_relative "../../enums/source"
16
16
  require_relative "../../enums/event"
17
17
  require_relative "../../enums/level"
@@ -21,11 +21,6 @@ module LogStruct
21
21
  module Log
22
22
  class Shrine
23
23
  class Metadata < T::Struct
24
- # typed: strict
25
- # frozen_string_literal: true
26
-
27
- extend T::Sig
28
-
29
24
  extend T::Sig
30
25
 
31
26
  # Shared/common fields
@@ -35,55 +30,22 @@ module LogStruct
35
30
  const :level, Level, default: Level::Info
36
31
 
37
32
  # Event-specific fields
38
- const :storage, String
39
- const :location, String
33
+ const :storage, Symbol
34
+ const :location, T.nilable(String), default: nil
40
35
  const :metadata, T.nilable(T::Hash[String, T.untyped]), default: nil
41
36
 
42
- # Additional data
43
- include LogStruct::Log::Interfaces::AdditionalDataField
44
- const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
45
- include LogStruct::Log::Shared::MergeAdditionalDataFields
46
-
47
- # Request fields (optional)
48
-
49
37
  # Serialize shared fields
50
38
  include LogStruct::Log::Interfaces::CommonFields
51
39
  include LogStruct::Log::Shared::SerializeCommon
52
40
 
53
41
  sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
54
- def self.base_hash
55
- {}
56
- end
57
-
58
- sig {
59
- params(storage: T.untyped,
60
- location: T.untyped,
61
- metadata: T.untyped,
62
- additional_data: T.untyped,
63
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
64
- }
65
- def self.build(storage:,
66
- location:,
67
- metadata: nil,
68
- additional_data: nil,
69
- timestamp: Time.now)
70
- h = base_hash
42
+ def to_h
43
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
71
44
  h[LogField::Storage] = storage
72
- h[LogField::Location] = location
45
+ h[LogField::Location] = location unless location.nil?
73
46
  h[LogField::Metadata] = metadata unless metadata.nil?
74
47
  h
75
48
  end
76
-
77
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
78
- def to_h
79
- self.class.build(
80
- storage: storage,
81
- location: location,
82
- metadata: metadata,
83
- additional_data: additional_data,
84
- timestamp: timestamp
85
- )
86
- end
87
49
  end
88
50
  end
89
51
  end