uri-amqp 1.0.1 → 1.0.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 +5 -5
- data/.rubocop.yml +20 -0
- data/.travis.yml +4 -1
- data/CHANGELOG.md +13 -0
- data/Gemfile +3 -1
- data/README.md +28 -19
- data/Rakefile +3 -1
- data/bin/console +1 -0
- data/lib/uri/amqp.rb +16 -16
- data/lib/uri/amqp/version.rb +7 -0
- data/lib/uri/amqps.rb +13 -10
- data/uri-amqp.gemspec +11 -7
- metadata +23 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b0908c708c9be720494c5eed8d83fb1d790bce2f25de4fb3b3d95442f4270b69
|
4
|
+
data.tar.gz: 9c1d2a089ab7d5a139f5ef292eca89c40cb96cbb56e7d09d05437ec28ddbb05e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 79426c0f1faa0f4cd0b5ef3f7dc625fecda95a0a03c03528e04238a07c07cd63121d14e1d43592fe730bbc2d8c59938b8e515b5a3da38e764c612a90090ac8f6
|
7
|
+
data.tar.gz: 9d04391e7d84f29a62ddaaaed181387d0b0ce5f159c2b04eb54d0132db4fd94224862d5175f9f60a4cd5d3df15749659bf23ffbee05bff894cb7f8fe405de704
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
AllCops:
|
2
|
+
TargetRubyVersion: 2.3
|
3
|
+
|
4
|
+
Style/StringLiterals:
|
5
|
+
Enabled: false
|
6
|
+
|
7
|
+
Style/Documentation:
|
8
|
+
Enabled: false
|
9
|
+
|
10
|
+
Naming/AccessorMethodName:
|
11
|
+
Enabled: false
|
12
|
+
|
13
|
+
Metrics/ClassLength:
|
14
|
+
Max: 200
|
15
|
+
|
16
|
+
Metrics/BlockLength:
|
17
|
+
Enabled: false
|
18
|
+
|
19
|
+
Metrics/LineLength:
|
20
|
+
Enabled: false
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
ADDED
data/Gemfile
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
source "https://rubygems.org"
|
2
4
|
|
3
|
-
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
5
|
+
git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
4
6
|
|
5
7
|
# Specify your gem's dependencies in uri-amqp.gemspec
|
6
8
|
gemspec
|
data/README.md
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
[](https://badge.fury.io/rb/uri-amqp)
|
2
|
+
[](https://travis-ci.org/Tensho/uri-amqp)
|
3
|
+
[](https://rubygems.org/gems/uri-amqp)
|
4
|
+
|
2
5
|
|
3
6
|
# URI::AMQP
|
4
7
|
|
@@ -26,45 +29,45 @@ Or install it yourself as:
|
|
26
29
|
As any other URI (HTTP, FTP, LDAP) you may call `URI.parse` with string argument and it will automatically detect scheme and return `URI::AMQP` or `URI::AMQPS` instance.
|
27
30
|
|
28
31
|
```ruby
|
29
|
-
uri = URI.parse("amqps://user:pass@host/vhost?heartbeat=10&connection_timeout=100&channel_max=1000&certfile=/examples/tls/client_cert.pem&keyfile=/examples/tls/client_key.pem")
|
32
|
+
> uri = URI.parse("amqps://user:pass@host/vhost?heartbeat=10&connection_timeout=100&channel_max=1000&certfile=/examples/tls/client_cert.pem&keyfile=/examples/tls/client_key.pem")
|
30
33
|
=> #<URI::AMQPS amqps://user:pass@host/vhost?heartbeat=10&connection_timeout=100&channel_max=1000&certfile=/examples/tls/client_cert.pem&keyfile=/examples/tls/client_key.pem>
|
31
|
-
uri.scheme
|
34
|
+
> uri.scheme
|
32
35
|
=> "amqp"
|
33
|
-
uri.user
|
36
|
+
> uri.user
|
34
37
|
=> "user"
|
35
|
-
uri.password
|
38
|
+
> uri.password
|
36
39
|
=> "pass"
|
37
|
-
uri.host
|
40
|
+
> uri.host
|
38
41
|
=> "host"
|
39
|
-
uri.vhost
|
42
|
+
> uri.vhost
|
40
43
|
=> "vhost"
|
41
|
-
uri.vhost
|
44
|
+
> uri.vhost
|
42
45
|
=> "vhost"
|
43
|
-
uri.heartbeat
|
46
|
+
> uri.heartbeat
|
44
47
|
=> 10
|
45
|
-
uri.connection_timeout
|
48
|
+
> uri.connection_timeout
|
46
49
|
=> 100
|
47
|
-
uri.channel_max
|
50
|
+
> uri.channel_max
|
48
51
|
=> 1000
|
49
|
-
uri.verify
|
52
|
+
> uri.verify
|
50
53
|
=> false
|
51
|
-
uri.fail_if_no_peer_cert
|
54
|
+
> uri.fail_if_no_peer_cert
|
52
55
|
=> false
|
53
|
-
uri.cacertfile
|
56
|
+
> uri.cacertfile
|
54
57
|
=> nil
|
55
|
-
uri.certfile
|
58
|
+
> uri.certfile
|
56
59
|
=> "/examples/tls/client_cert.pem"
|
57
|
-
uri.keyfile
|
60
|
+
> uri.keyfile
|
58
61
|
=> "/examples/tls/client_key.pem"
|
59
62
|
```
|
60
63
|
|
61
64
|
There are also implemented some checks:
|
62
65
|
|
63
|
-
```
|
64
|
-
|
66
|
+
```ruby
|
67
|
+
> URI.parse("amqp://host/vhost/hurricane")
|
65
68
|
=> URI::InvalidComponentError: bad vhost (expected only leading "/"): /vhost/hurricane
|
66
69
|
|
67
|
-
|
70
|
+
> URI.parse("amqp://host/vhost?certfile=/examples/tls/client_cert.pem&keyfile=/examples/tls/client_key.pem")
|
68
71
|
=> URI::InvalidComponentError: bad certfile (expected only in "amqps" schema): /examples/tls/client_cert.pem
|
69
72
|
```
|
70
73
|
|
@@ -76,10 +79,16 @@ uri = URI.parse("amqp://host/vhost?certfile=/examples/tls/client_cert.pem&keyfil
|
|
76
79
|
|
77
80
|
## Development
|
78
81
|
|
79
|
-
After checking out the repo, run `bin/setup` to install dependencies.
|
82
|
+
After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
80
83
|
|
81
84
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
82
85
|
|
86
|
+
Run `bundle exec rubocop` before PR opening.
|
87
|
+
|
88
|
+
## Testing
|
89
|
+
|
90
|
+
$ rake
|
91
|
+
|
83
92
|
## Contributing
|
84
93
|
|
85
94
|
Bug reports and pull requests are welcome on GitHub at https://github.com/Tensho/uri-amqp. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
data/lib/uri/amqp.rb
CHANGED
@@ -1,10 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "cgi"
|
2
4
|
require "uri/generic"
|
3
5
|
|
6
|
+
# https://www.rabbitmq.com/protocol.html
|
7
|
+
# https://www.rabbitmq.com/uri-spec.html
|
8
|
+
# https://www.rabbitmq.com/uri-query-parameters.html
|
4
9
|
module URI
|
5
10
|
class AMQP < Generic
|
6
|
-
VERSION = "1.0.1"
|
7
|
-
|
8
11
|
DEFAULT_PORT = 5672
|
9
12
|
|
10
13
|
COMPONENT = %i[
|
@@ -73,44 +76,41 @@ module URI
|
|
73
76
|
protected
|
74
77
|
|
75
78
|
def set_userinfo(user, password = nil)
|
76
|
-
user &&= CGI
|
77
|
-
password &&= CGI
|
79
|
+
user &&= CGI.unescape(user)
|
80
|
+
password &&= CGI.unescape(password)
|
78
81
|
super(user, password)
|
79
82
|
end
|
80
83
|
|
81
84
|
def set_user(value)
|
82
|
-
super(value && CGI
|
85
|
+
super(value && CGI.unescape(value))
|
83
86
|
end
|
84
87
|
|
85
88
|
def set_host(value)
|
86
|
-
super(value && CGI
|
89
|
+
super(value && CGI.unescape(value))
|
87
90
|
end
|
88
91
|
|
89
92
|
def set_vhost(value)
|
90
|
-
@vhost =
|
91
|
-
value.delete!('/')
|
92
|
-
CGI::unescape(value)
|
93
|
-
end
|
93
|
+
@vhost = value && CGI.unescape(value.delete('/'))
|
94
94
|
end
|
95
95
|
|
96
96
|
def set_heartbeat(value)
|
97
|
-
@heartbeat = value
|
97
|
+
@heartbeat = value&.to_i
|
98
98
|
end
|
99
99
|
|
100
100
|
def set_connection_timeout(value)
|
101
|
-
@connection_timeout = value
|
101
|
+
@connection_timeout = value&.to_i
|
102
102
|
end
|
103
103
|
|
104
104
|
def set_channel_max(value)
|
105
|
-
@channel_max = value
|
105
|
+
@channel_max = value&.to_i
|
106
106
|
end
|
107
107
|
|
108
108
|
def set_verify(value)
|
109
|
-
@verify =
|
109
|
+
@verify = !value.nil?
|
110
110
|
end
|
111
111
|
|
112
112
|
def set_fail_if_no_peer_cert(value)
|
113
|
-
@fail_if_no_peer_cert =
|
113
|
+
@fail_if_no_peer_cert = !value.nil?
|
114
114
|
end
|
115
115
|
|
116
116
|
def set_cacertfile(value)
|
@@ -150,7 +150,7 @@ module URI
|
|
150
150
|
end
|
151
151
|
|
152
152
|
def check_vhost(value)
|
153
|
-
raise InvalidComponentError, "bad vhost (expected only leading \"/\"): #{value}" if value &&
|
153
|
+
raise InvalidComponentError, "bad vhost (expected only leading \"/\"): #{value}" if value && value !~ %r{^/[^/]*$}
|
154
154
|
end
|
155
155
|
|
156
156
|
%i[
|
data/lib/uri/amqps.rb
CHANGED
@@ -1,23 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "uri/amqp"
|
2
4
|
|
5
|
+
# https://www.rabbitmq.com/protocol.html
|
6
|
+
# https://www.rabbitmq.com/uri-spec.html
|
7
|
+
# https://www.rabbitmq.com/uri-query-parameters.html
|
8
|
+
# https://www.rabbitmq.com/ssl.html
|
3
9
|
module URI
|
4
10
|
class AMQPS < AMQP
|
5
11
|
DEFAULT_PORT = 5671
|
6
12
|
|
7
|
-
|
8
|
-
end
|
13
|
+
# rubocop:disable Naming/UncommunicativeMethodParamName
|
14
|
+
def check_verify(_); end
|
9
15
|
|
10
|
-
def check_fail_if_no_peer_cert(_)
|
11
|
-
end
|
16
|
+
def check_fail_if_no_peer_cert(_); end
|
12
17
|
|
13
|
-
def check_cacertfile(_)
|
14
|
-
end
|
18
|
+
def check_cacertfile(_); end
|
15
19
|
|
16
|
-
def check_certfile(_)
|
17
|
-
end
|
20
|
+
def check_certfile(_); end
|
18
21
|
|
19
|
-
def check_keyfile(_)
|
20
|
-
|
22
|
+
def check_keyfile(_); end
|
23
|
+
# rubocop:enable Naming/UncommunicativeMethodParamName
|
21
24
|
end
|
22
25
|
|
23
26
|
@@schemes["AMQPS"] = AMQPS
|
data/uri-amqp.gemspec
CHANGED
@@ -1,6 +1,9 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
2
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
5
|
|
6
|
+
require "uri/amqp/version"
|
4
7
|
require "uri/amqp"
|
5
8
|
require "uri/amqps"
|
6
9
|
|
@@ -10,31 +13,32 @@ Gem::Specification.new do |spec|
|
|
10
13
|
spec.authors = ["Andrew Babichev"]
|
11
14
|
spec.email = ["andrew.babichev@gmail.com"]
|
12
15
|
|
13
|
-
spec.summary =
|
14
|
-
spec.description =
|
16
|
+
spec.summary = "URI::AMQP"
|
17
|
+
spec.description = "URI stdlib module extension for AMQP"
|
15
18
|
spec.homepage = "https://github.com/Tensho/uri-amqp"
|
16
19
|
spec.license = "MIT"
|
17
20
|
|
18
21
|
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
19
22
|
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
20
|
-
if spec.respond_to?(:metadata)
|
23
|
+
if spec.respond_to?(:metadata) # rubocop:disable Style/GuardClause
|
21
24
|
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
22
25
|
else
|
23
26
|
raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
24
27
|
end
|
25
28
|
|
26
|
-
spec.files
|
29
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
27
30
|
f.match(%r{^(test|spec|features)/})
|
28
31
|
end
|
29
32
|
spec.bindir = "exe"
|
30
33
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
31
34
|
spec.require_paths = ["lib"]
|
32
35
|
|
33
|
-
spec.required_ruby_version = "
|
36
|
+
spec.required_ruby_version = ">= 2.3.0"
|
34
37
|
|
35
38
|
spec.add_development_dependency "bundler", "~> 1.16"
|
39
|
+
spec.add_development_dependency "pry-byebug"
|
36
40
|
spec.add_development_dependency "rake", "~> 10.0"
|
37
41
|
spec.add_development_dependency "rspec", "~> 3.0"
|
38
42
|
spec.add_development_dependency "rspec-its", "~> 1.2.0"
|
39
|
-
spec.add_development_dependency "
|
43
|
+
spec.add_development_dependency "rubocop"
|
40
44
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uri-amqp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Babichev
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-10-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.16'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: pry-byebug
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rake
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,7 +81,7 @@ dependencies:
|
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: 1.2.0
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
84
|
+
name: rubocop
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
87
|
- - ">="
|
@@ -89,7 +103,9 @@ extra_rdoc_files: []
|
|
89
103
|
files:
|
90
104
|
- ".gitignore"
|
91
105
|
- ".rspec"
|
106
|
+
- ".rubocop.yml"
|
92
107
|
- ".travis.yml"
|
108
|
+
- CHANGELOG.md
|
93
109
|
- CODE_OF_CONDUCT.md
|
94
110
|
- Gemfile
|
95
111
|
- LICENSE.txt
|
@@ -98,6 +114,7 @@ files:
|
|
98
114
|
- bin/console
|
99
115
|
- bin/setup
|
100
116
|
- lib/uri/amqp.rb
|
117
|
+
- lib/uri/amqp/version.rb
|
101
118
|
- lib/uri/amqps.rb
|
102
119
|
- uri-amqp.gemspec
|
103
120
|
homepage: https://github.com/Tensho/uri-amqp
|
@@ -111,9 +128,9 @@ require_paths:
|
|
111
128
|
- lib
|
112
129
|
required_ruby_version: !ruby/object:Gem::Requirement
|
113
130
|
requirements:
|
114
|
-
- - "
|
131
|
+
- - ">="
|
115
132
|
- !ruby/object:Gem::Version
|
116
|
-
version:
|
133
|
+
version: 2.3.0
|
117
134
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
135
|
requirements:
|
119
136
|
- - ">="
|
@@ -121,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
121
138
|
version: '0'
|
122
139
|
requirements: []
|
123
140
|
rubyforge_project:
|
124
|
-
rubygems_version: 2.6
|
141
|
+
rubygems_version: 2.7.6
|
125
142
|
signing_key:
|
126
143
|
specification_version: 4
|
127
144
|
summary: URI::AMQP
|