avro-patches 0.3.2 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cead23f8f8b193155fa09f74ea11fbf93ef2f82a
4
- data.tar.gz: 898e50b87cf7131ae6e70d702d29b5fb5130a0b9
3
+ metadata.gz: e79aa3bc80d548e2c6556c05208e1ac2b6b47889
4
+ data.tar.gz: b84ac201fea59bb1cd68fe70cf4874ba8252acbf
5
5
  SHA512:
6
- metadata.gz: 5180f690479d7c98bb404112ae1789164f333068ebb6f388385e18bb0c50e4c00fc2fb12703c112c44a7ea344d159c2aab9dd168f33eab09e05614641a9490ab
7
- data.tar.gz: 108e130bc1452bf63fa5fe89cd487030bef60243d72b3e15ed4cc9443694e4343beaf8cabcee654da3e0d72b9de0ce126fd33dcd0ea651b1e1f2167beb5fcfd3
6
+ metadata.gz: a085676807b8837acb53c6d66a5cd53cc2a0e4bad3055892abdd03c59fdf02a9b85cabeee91b81fc6a75c3e428b4a0f7bef6941c9034a8f646b30353c1cf178f
7
+ data.tar.gz: 73404b334dfec4168f3cebbe7dc07266be9ecf716ce5c0d3ea9a0086e1d2919cbe99766b743e12f7596a1a9d91e6d6ccbe3868b5c8529f898d95d39938f1a75e
@@ -1,5 +1,9 @@
1
1
  # avro-patches
2
2
 
3
+ ## v0.3.3
4
+ - Restore basic validation of records, arrays, and maps before writing.
5
+ - Add validation to protect against nil value for map.
6
+
3
7
  ## v0.3.2
4
8
  - Fix remaining Ruby 2.4 deprecation notices by replacing `require 'avro'`.
5
9
 
@@ -25,3 +25,26 @@ Avro::IO::DatumWriter.class_eval do
25
25
  end
26
26
  end
27
27
  end
28
+
29
+ module AvroPatches
30
+ module SchemaValidator
31
+ module IOPatches
32
+ def write_record(writers_schema, datum, encoder)
33
+ raise Avro::IO::AvroTypeError.new(writers_schema, datum) unless datum.is_a?(Hash)
34
+ super
35
+ end
36
+
37
+ def write_array(writers_schema, datum, encoder)
38
+ raise Avro::IO::AvroTypeError.new(writers_schema, datum) unless datum.is_a?(Array)
39
+ super
40
+ end
41
+
42
+ def write_map(writers_schema, datum, encoder)
43
+ raise Avro::IO::AvroTypeError.new(writers_schema, datum) unless datum.is_a?(Hash)
44
+ super
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+ Avro::IO::DatumWriter.prepend(AvroPatches::SchemaValidator::IOPatches)
@@ -157,6 +157,7 @@ module Avro
157
157
  end
158
158
 
159
159
  def validate_map(expected_schema, datum, path, result)
160
+ fail TypeMismatchError unless datum.is_a?(Hash)
160
161
  datum.keys.each do |k|
161
162
  result.add_error(path, "unexpected key type '#{ruby_to_avro_type(k.class)}' in map") unless k.is_a?(String)
162
163
  end
@@ -1,3 +1,3 @@
1
1
  module AvroPatches
2
- VERSION = '0.3.2'.freeze
2
+ VERSION = '0.3.3'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avro-patches
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Salsify, Inc
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-01 00:00:00.000000000 Z
11
+ date: 2018-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -140,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
140
  version: '0'
141
141
  requirements: []
142
142
  rubyforge_project:
143
- rubygems_version: 2.6.11
143
+ rubygems_version: 2.6.13
144
144
  signing_key:
145
145
  specification_version: 4
146
146
  summary: Patches for the official Apache Avro Ruby implementation