md-logstasher 1.9.1 → 1.9.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3f2904af9e8b7395dd7b50dbc848bd57cedb273a707a807a4fe33192434afb92
4
- data.tar.gz: a06fecadb7ceb313eb7d829f564c7d46025a0b28434254f43d4bf0d05186f93d
3
+ metadata.gz: 818b367f70c5c67513ffee0eb376b16ef3a7e7bfb11d48ad00ef43db7ff181ec
4
+ data.tar.gz: 34d1591c89c63b24475a432aaa738470d9fe8605377073c24a5dba4dc8f6bf84
5
5
  SHA512:
6
- metadata.gz: 6785ff4d5b8fc0e82442ff49df6686ee720ec0d5ee27b8141b4e4176bef0ef22e267dcde51a44a73a7681c0c319d744492dbdea4f1f33a26c61cdd7f7bcc73e5
7
- data.tar.gz: 124954b6f62e435bad90f5f0505edef2ecc99b2dab92db51357a047df59e25951fc9da0b6af8d37644132bbff7717c15664df3a9395df605660ffd3c477b1a98
6
+ metadata.gz: 349c390bf7a5a71d2c7a7bac71fe308a2186b053a8e3fcc852e61f0b2ec5e2045c0bd8cf764e131444ba2386d24e22754253e8f4c3cf67905946e97cc8123c40
7
+ data.tar.gz: 847f72fe1ce8a872f6f600ee0e4f2f896b95ba102e40d25dbee1499cf596e35b0d94ba3e748c4cbc9a2912dcd561b4fb8bf792ed6eb6a6ee6705e5067ae58fc7
@@ -1,3 +1,3 @@
1
1
  module LogStasher
2
- VERSION = "1.9.1"
2
+ VERSION = "1.9.2"
3
3
  end
data/lib/logstasher.rb CHANGED
@@ -93,7 +93,7 @@ module LogStasher
93
93
  payload = ::LogStash::Event.new(payload) if as_logstash_event
94
94
 
95
95
  # Validate payload if a dry_validation_contract is configured
96
- validate_payload(payload) if dry_validation_contract
96
+ payload = validate_payload(payload) if dry_validation_contract
97
97
 
98
98
  logger << payload.to_json + $INPUT_RECORD_SEPARATOR
99
99
  end
@@ -117,17 +117,16 @@ module LogStasher
117
117
  private
118
118
 
119
119
  def validate_payload(payload)
120
- return unless payload.is_a?(::LogStash::Event) || payload.is_a?(::Hash)
120
+ return payload unless payload.is_a?(::LogStash::Event) || payload.is_a?(::Hash)
121
121
 
122
122
  formatted_payload = ::JSON.parse(payload.to_json).deep_symbolize_keys
123
- validation = dry_validation_contract.call(formatted_payload)
124
- validation_payload = {
125
- dry_validation_success: validation.success?,
126
- dry_validation_errors: validation.errors.to_h.to_json
123
+ validation_results = dry_validation_contract.call(formatted_payload)
124
+ validation_metadata = {
125
+ dry_validation_success: validation_results.success?,
126
+ dry_validation_errors: validation_results.errors.to_h.to_json
127
127
  }
128
128
 
129
- return payload.append(validation_payload) if payload.is_a?(::LogStash::Event)
130
- return payload.merge!(validation_payload) if payload.is_a?(::Hash)
129
+ formatted_payload.deep_merge(validation_results.to_h).merge(validation_metadata)
131
130
  end
132
131
  end
133
132
  end
@@ -61,9 +61,11 @@ describe ::LogStasher do
61
61
 
62
62
  context "with dry validation contract" do
63
63
  let(:validation_contract) do
64
+ Types = Dry.Types()
64
65
  Class.new(Dry::Validation::Contract) do
65
- params do
66
+ schema do
66
67
  required(:yolo).filled(:string)
68
+ optional(:yolo_coercible).maybe(Types::Coercible::String)
67
69
  end
68
70
  end.new
69
71
  end
@@ -146,6 +148,15 @@ describe ::LogStasher do
146
148
 
147
149
  ::LogStasher.log_as_json(::LogStash::Event.new("yolo" => :brolo))
148
150
  end
151
+
152
+ it "logs coerced types" do
153
+ expect(::LogStasher.logger).to receive(:<<) do |json|
154
+ payload = ::JSON.parse(json)
155
+ expect(payload["yolo_coercible"]).to eq("123")
156
+ end
157
+
158
+ ::LogStasher.log_as_json(::LogStash::Event.new("yolo_coercible" => 123))
159
+ end
149
160
  end
150
161
  end
151
162
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: md-logstasher
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.1
4
+ version: 1.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Devin Christensen