msgr 0.15.0.1.b136 → 0.15.0.1.b139
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -0
- data/Gemfile +8 -6
- data/gemfiles/Gemfile.rails-master +6 -0
- data/lib/msgr/client.rb +60 -14
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc6380bab1ce06ee0a36d47942d9a6c3fa56efb5
|
4
|
+
data.tar.gz: 92bb7ec6e91aeb2edab35d1b1af12aa0097de34c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2653a9e0db967ccdd1a4869c77f645ddca8bfffa6961edb3c1d8837462bf237bfcf5671f27f438121d827a0f75a65a1ca5a4ea7409c55dada63997f7c0bc5e1a
|
7
|
+
data.tar.gz: 8546dffaf7a57db1bc58bb531f66d884a04cb3f97018b4061f4f19b31c70864e8109734781e658b85a73bb67ec105232ce6801911e0b29d10bbd85198d39e25d
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -1,23 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
source 'https://rubygems.org'
|
2
4
|
|
3
5
|
# Development gems
|
4
6
|
#
|
7
|
+
gem 'coveralls'
|
8
|
+
gem 'fuubar'
|
5
9
|
gem 'rake'
|
6
10
|
gem 'rspec', '~> 3.0'
|
7
|
-
gem 'fuubar'
|
8
|
-
gem 'coveralls'
|
9
11
|
|
10
12
|
# Doc
|
11
13
|
group :development do
|
12
|
-
gem 'yard', '~> 0.9.8'
|
13
|
-
gem 'listen'
|
14
|
-
gem 'guard-yard'
|
15
14
|
gem 'guard-rspec'
|
15
|
+
gem 'guard-yard'
|
16
|
+
gem 'listen'
|
16
17
|
gem 'redcarpet'
|
18
|
+
gem 'yard', '~> 0.9.8'
|
17
19
|
end
|
18
20
|
|
19
21
|
group :rails do
|
20
|
-
gem 'rails', '>= 3.2'
|
22
|
+
gem 'rails', '>= 3.2' unless $RAILS
|
21
23
|
gem 'rspec-rails'
|
22
24
|
gem 'sqlite3'
|
23
25
|
end
|
@@ -5,3 +5,9 @@ self.instance_eval Bundler.read_file 'Gemfile'
|
|
5
5
|
|
6
6
|
gem 'activesupport', git: 'https://github.com/rails/rails'
|
7
7
|
gem 'bunny', ENV['BUNNY_VERSION'] if ENV['BUNNY_VERSION']
|
8
|
+
|
9
|
+
group :rails do
|
10
|
+
$RAILS = true
|
11
|
+
gem 'rails', '>= 3.2', git: 'https://github.com/rails/rails'
|
12
|
+
gem 'arel', git: 'https://github.com/rails/arel'
|
13
|
+
end
|
data/lib/msgr/client.rb
CHANGED
@@ -1,25 +1,25 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'uri'
|
4
|
+
require 'cgi'
|
5
|
+
|
2
6
|
module Msgr
|
3
7
|
# rubocop:disable Metrics/ClassLength
|
4
8
|
class Client
|
5
9
|
include Logging
|
6
|
-
attr_reader :uri, :config
|
7
10
|
|
8
|
-
|
9
|
-
# rubocop:disable Metrics/MethodLength
|
10
|
-
def initialize(config = {})
|
11
|
-
@uri = ::URI.parse config[:uri] ? config.delete(:uri) : 'amqp://localhost/'
|
12
|
-
config[:pass] ||= @uri.password
|
11
|
+
attr_reader :config
|
13
12
|
|
14
|
-
|
15
|
-
|
16
|
-
@
|
17
|
-
|
18
|
-
|
19
|
-
|
13
|
+
# rubocop:disable MethodLength
|
14
|
+
def initialize(config = {})
|
15
|
+
@config = {
|
16
|
+
host: '127.0.0.1',
|
17
|
+
vhost: '/',
|
18
|
+
max: 2
|
19
|
+
}
|
20
20
|
|
21
|
-
@config
|
22
|
-
@config
|
21
|
+
@config.merge! parse(config.delete(:uri)) if config.key?(:uri)
|
22
|
+
@config.merge! config.symbolize_keys
|
23
23
|
|
24
24
|
@mutex = ::Mutex.new
|
25
25
|
@routes = Routes.new
|
@@ -27,6 +27,30 @@ module Msgr
|
|
27
27
|
|
28
28
|
log(:debug) { "Created new client on process ##{@pid}..." }
|
29
29
|
end
|
30
|
+
# rubocop:enable all
|
31
|
+
|
32
|
+
# rubocop:disable AbcSize
|
33
|
+
# rubocop:disable MethodLength
|
34
|
+
# rubocop:disable PerceivedComplexity
|
35
|
+
# rubocop:disable CyclomaticComplexity
|
36
|
+
def uri
|
37
|
+
@uri = begin
|
38
|
+
uri = ::URI.parse('amqp://localhost')
|
39
|
+
|
40
|
+
uri.user = CGI.escape(config[:user]) if config.key?(:user)
|
41
|
+
uri.password = '****' if config.key?(:pass)
|
42
|
+
uri.host = config[:host] if config.key?(:host)
|
43
|
+
uri.port = config[:port] if config.key?(:port)
|
44
|
+
uri.scheme = config[:ssl] ? 'amqps' : 'amqp'
|
45
|
+
|
46
|
+
if config.key?(:vhost) && config[:vhost] != '/'
|
47
|
+
uri.path = "/#{CGI.escape(config[:vhost])}"
|
48
|
+
end
|
49
|
+
|
50
|
+
uri
|
51
|
+
end
|
52
|
+
end
|
53
|
+
# rubocop:enable all
|
30
54
|
|
31
55
|
def running?
|
32
56
|
mutex.synchronize do
|
@@ -35,6 +59,7 @@ module Msgr
|
|
35
59
|
end
|
36
60
|
end
|
37
61
|
|
62
|
+
# rubocop:disable AbcSize
|
38
63
|
def start
|
39
64
|
mutex.synchronize do
|
40
65
|
check_process!
|
@@ -47,6 +72,7 @@ module Msgr
|
|
47
72
|
connection.bind(@routes)
|
48
73
|
end
|
49
74
|
end
|
75
|
+
# rubocop:enable all
|
50
76
|
|
51
77
|
def connect
|
52
78
|
mutex.synchronize do
|
@@ -59,6 +85,7 @@ module Msgr
|
|
59
85
|
end
|
60
86
|
end
|
61
87
|
|
88
|
+
# rubocop:disable AbcSize
|
62
89
|
def stop(opts = {})
|
63
90
|
mutex.synchronize do
|
64
91
|
check_process!
|
@@ -73,6 +100,7 @@ module Msgr
|
|
73
100
|
reset
|
74
101
|
end
|
75
102
|
end
|
103
|
+
# rubocop:enable all
|
76
104
|
|
77
105
|
def purge(release: false)
|
78
106
|
mutex.synchronize do
|
@@ -155,5 +183,23 @@ module Msgr
|
|
155
183
|
@bindings = nil
|
156
184
|
@dispatcher = nil
|
157
185
|
end
|
186
|
+
|
187
|
+
# rubocop:disable AbcSize
|
188
|
+
def parse(uri)
|
189
|
+
# Legacy parsing of URI configuration; does not follow usual
|
190
|
+
# AMQP vhost encoding but used regular URL path
|
191
|
+
uri = ::URI.parse(uri)
|
192
|
+
|
193
|
+
config = {}
|
194
|
+
config[:user] ||= uri.user if uri.user
|
195
|
+
config[:pass] ||= uri.password if uri.password
|
196
|
+
config[:host] ||= uri.host if uri.host
|
197
|
+
config[:port] ||= uri.port if uri.port
|
198
|
+
config[:vhost] ||= uri.path if uri.path
|
199
|
+
config[:ssl] ||= uri.scheme.casecmp('amqps').zero?
|
200
|
+
|
201
|
+
config
|
202
|
+
end
|
203
|
+
# rubocop:enable all
|
158
204
|
end
|
159
205
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: msgr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.15.0.1.
|
4
|
+
version: 0.15.0.1.b139
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Graichen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|