vx-lib-consumer 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5fda1f920de953cad74aad9f480269b511a2ea6d
4
- data.tar.gz: 88cd289d7a38409548f5e768d8bae0549b7b9510
3
+ metadata.gz: ace1d62d962a0d5a67d5086e1284c258d47daf47
4
+ data.tar.gz: 5632632683d9fb9a118cfe4df1db3655555e5019
5
5
  SHA512:
6
- metadata.gz: a7676c4044041137059a8432eb34459c8340e9a162def1bc158700651528d8e5324f4bc949522166592a7ff6a9b69eaaa74bf60e5d1c55b232587daf34296779
7
- data.tar.gz: cd252ac02ae73fa59b14c5f13b78e241aa79ab7507e0c40eb4414822ee12988c699984bd23879a298ad9c377dd557dbbd0fbf31b7a9b9ee97ba1a19d8656e416
6
+ metadata.gz: b17601c2d5e539c4ce4e169ab7a307ce4e43b9c34de763a6b5db27cf8ec9a0766ec64054ead7fe3ea5b1962238da9d2fdb108642f3a3f7858c9f1b2b7ecf825a
7
+ data.tar.gz: 0e2cbd3ce7012f8ebd7799e304212d56dd73a8fee7ad07ceb8a03d09fe82168c706b7337fd04956b1a9494aa7162a9de4d708cc06f6f460aacabeda08fee9776
data/.travis.yml CHANGED
@@ -3,5 +3,6 @@ services:
3
3
 
4
4
  rvm:
5
5
  - 2.1
6
+ - 2.2
6
7
 
7
8
  script: bundle exec rspec spec/ -b
@@ -7,7 +7,6 @@ module Vx
7
7
 
8
8
  DEBUG = 'VX_CONSUMER_DEBUG'.freeze
9
9
 
10
-
11
10
  attr_accessor :default_exchange_options, :default_queue_options,
12
11
  :default_publish_options, :default_exchange_type, :pool_timeout,
13
12
  :heartbeat, :spawn_attempts, :content_type, :debug,
@@ -1,3 +1,5 @@
1
+ require 'oj'
2
+
1
3
  module Vx
2
4
  module Lib
3
5
  module Consumer
@@ -56,18 +58,29 @@ module Vx
56
58
 
57
59
  define 'application/json' do
58
60
  pack do |body|
59
- if body.is_a?(String)
60
- body
61
- else
62
- ::JSON.dump body
61
+ encoded =
62
+ if body.is_a?(String)
63
+ body
64
+ else
65
+ ::Oj.dump(body, mode: :compat)
66
+ end
67
+
68
+ unless encoded.valid_encoding?
69
+ encoded.encode!('UTF-8', invalid: :replace)
63
70
  end
71
+
72
+ encoded
64
73
  end
65
74
 
66
75
  unpack do |payload, model|
76
+ unless payload.valid_encoding?
77
+ payload.encode!('UTF-8', invalid: :replace)
78
+ end
79
+
67
80
  if model && model.respond_to?(:from_json)
68
81
  model.from_json payload
69
82
  else
70
- ::JSON.parse(payload)
83
+ ::Oj.load(payload)
71
84
  end
72
85
  end
73
86
  end
@@ -1,7 +1,7 @@
1
1
  module Vx
2
2
  module Lib
3
3
  module Consumer
4
- VERSION = "0.3.2"
4
+ VERSION = "0.3.3"
5
5
  end
6
6
  end
7
7
  end
@@ -1,4 +1,4 @@
1
- require 'json'
1
+ require 'oj'
2
2
  require 'timeout'
3
3
  require 'spec_helper'
4
4
 
@@ -120,7 +120,7 @@ describe Vx::Lib::Consumer do
120
120
  sleep 0.1
121
121
  consumer.cancel
122
122
 
123
- expect(error[0]).to be_an_instance_of(JSON::ParserError)
123
+ expect(error[0]).to be_an_instance_of(Oj::ParseError)
124
124
  expect(error[1][:consumer]).to_not be_nil
125
125
  end
126
126
 
@@ -27,6 +27,22 @@ describe Vx::Lib::Consumer::Serializer do
27
27
  it "should unpack payload" do
28
28
  expect(s.unpack('application/json', payload.to_json, nil)).to eq("a"=>1)
29
29
  end
30
+
31
+ it "should pack invalid unicode" do
32
+ payload = { a: "Le Caf\xc3\xa9 \xa9" }
33
+ expect(payload[:a]).to_not be_valid_encoding
34
+ json = s.pack('application/json', payload)
35
+ expect(json).to be_valid_encoding
36
+ expect(json).to eq "{\"a\":\"Le Café �\"}"
37
+ end
38
+
39
+ it "should unpack invalid unicode" do
40
+ payload = "{\"a\":\"Le Café \xA9\"}"
41
+ expect(payload).to_not be_valid_encoding
42
+ payload = s.unpack('application/json', payload, nil)
43
+ expect(payload).to eq("a" => "Le Café �")
44
+ expect(payload["a"]).to be_valid_encoding
45
+ end
30
46
  end
31
47
 
32
48
  context "application/x-protobuf" do
@@ -18,8 +18,9 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_runtime_dependency 'bunny', '= 1.6.3'
21
+ spec.add_runtime_dependency 'bunny', '= 1.7.0'
22
22
  spec.add_runtime_dependency 'vx-lib-rack-builder', '>= 0.0.2'
23
+ spec.add_runtime_dependency 'oj'
23
24
 
24
25
  spec.add_development_dependency "bundler", "~> 1.5"
25
26
  spec.add_development_dependency "rake"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vx-lib-consumer
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
  - Dmitry Galinsky
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-09 00:00:00.000000000 Z
11
+ date: 2015-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bunny
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 1.6.3
19
+ version: 1.7.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 1.6.3
26
+ version: 1.7.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: vx-lib-rack-builder
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.0.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: oj
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement