avro-wrapper 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/avro_wrapper.rb +39 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cba4c4eea1825be6a6f0e10bec4cb33ec6454f0e
4
+ data.tar.gz: c437dec7a705e513f32d76267a126cb3f80e342a
5
+ SHA512:
6
+ metadata.gz: e2237d10e333618314537ee519acf5e35d7dfc1c2c58015a779348f1b256911266d80e76f1e789e9236b3f1442feafa8b3f3fba5b46a4fa21025e935d1454cbc
7
+ data.tar.gz: b77a286c208817cae042ac34a109c85f2f5993a4cf4a792e2ad603ea20a737f4876f3899bc026cb8f79b2a9b30d2d41965d412e1f3c8844252796b6f977894a3
@@ -0,0 +1,39 @@
1
+ require 'avro'
2
+
3
+ class AvroWrapper
4
+ def initialize(args={})
5
+ args.each {|k,v| send("#{k}=",v)}
6
+ end
7
+
8
+ def self.schema_doc
9
+ "NOT INITIALIZED"
10
+ end
11
+
12
+ def schema_doc
13
+ self.class.schema_doc
14
+ end
15
+
16
+ def to_h
17
+ Hash[instance_variables.map do |k|
18
+ [k.to_s.gsub(/^@/,""),eval(k.to_s)]
19
+ end]
20
+ end
21
+
22
+ def to_avro_string
23
+ schema = Avro::Schema.parse(schema_doc)
24
+ dw = Avro::IO::DatumWriter.new(schema)
25
+ buffer = StringIO.new("".force_encoding("BINARY"))
26
+ encoder = Avro::IO::BinaryEncoder.new(buffer)
27
+ dw.write(self.to_h,encoder)
28
+ buffer.string
29
+ end
30
+
31
+ def self.from_avro_string(str)
32
+ schema = Avro::Schema.parse(schema_doc)
33
+ raw_data = StringIO.new(str)
34
+ decoder = Avro::IO::BinaryDecoder.new(raw_data)
35
+ datum_reader = Avro::IO::DatumReader.new(schema)
36
+ object_hash = datum_reader.read(decoder)
37
+ eval "#{self}.new(#{object_hash})"
38
+ end
39
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: avro-wrapper
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Razvan Popa
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-07-01 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: ''
14
+ email: razvan@itnovate.ro
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/avro_wrapper.rb
20
+ homepage: http://rubygems.org/gems/avro_wrapper
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.4.3
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: Wrapper for Avro
44
+ test_files: []