amqparty 0.0.2 → 0.0.4

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: d5da03512190acc7740d2ea81063633a39fd7e5d
4
- data.tar.gz: 01ddc064677659835cd11b1b3274b8147d52b9fd
3
+ metadata.gz: 24f1ff05a43649e133ef937f72d0a87abcb3940f
4
+ data.tar.gz: be5500567394b7cdbc674dda48efc8be80a59bb1
5
5
  SHA512:
6
- metadata.gz: f2bc2d849584b93ebdcf4a119e578ed6dede21f2198837a5e98fece0f1dbf2cb7ad8272c4d13b74d45cf927cc18422490f5934ac2ee3e0296454a8f70e588e50
7
- data.tar.gz: f782b39950d4f76eeae2fce9abdd618abc724ee9e2c04e2a3d7a91d43ea98f4650971b853dd9cf131d6a258c53804e9f3c296f4a384dae3c9a9306bd83cff684
6
+ metadata.gz: 5912b578d5d002737d15d5abe83314e58aa470f688fd28f14e935801adf6bbf4263c3712d58ca7d20257d120baf05c28d2ffdad34b23b12c1481e63bd2fb05d6
7
+ data.tar.gz: 297bf404bc4cac06adbbcc3fc86a2904538385722e287ce2ea43e055e8b3c96c385436c1b1b5aa193db78af6716b88b0e848bf280458727c5a7597305738e7d3
data/.rspec CHANGED
@@ -1,2 +0,0 @@
1
- --require emoji-rspec
2
- --format hearts
data/.travis.yml CHANGED
@@ -3,8 +3,8 @@ rvm:
3
3
  - 2.1.0
4
4
  - 2.0.0
5
5
  - 1.9.3
6
- - 1.9.2
6
+ # Decided not to support 1.9.2 because HTTParty won't support it - 1.9.2
7
7
  - jruby-19mode # JRuby in 1.9 mode
8
8
  - ruby-head
9
9
  - jruby-head
10
- - rbx
10
+ # Not trying to test because Travis doesn't like it - rbx
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  A AMQP-HTTP compliant modification of HTTParty for use with jackalope
4
4
 
5
+ ![Travis CI](https://travis-ci.org/rack-amqp/amqparty.svg?branch=master)
6
+
5
7
  ## Installation
6
8
 
7
9
  Add this line to your application's Gemfile:
@@ -37,6 +39,21 @@ Uri scheme must be amqp or amqps. Hostname is actually the queue name.
37
39
 
38
40
  Post and put also work. Delete, head, options are untested.
39
41
 
42
+ Valid configuration parameters are shown below:
43
+
44
+ | Parameters | Description | Default Value |
45
+ |-----------------------|:----------------------------------------------------------------------:|--------------:|
46
+ | amqp\_host | host name or IP address of the rabbitmq server | localhost |
47
+ | port | rabbitmq server port | 5672 |
48
+ | username | username to use for the rabbitmq server connection | guest |
49
+ | password | password to use for the rabbitmq server connection | guest |
50
+ | tls | use TLS when connecting to the rabbitmq server | false |
51
+ | tls\_ca\_certificates | an array of paths to CA certificates in pem format | [] |
52
+ | tls\_cert | path to the client certificate for SSL connections in pem format | nil |
53
+ | tls\_key | path to the client private key for SSL connections in pem format | nil |
54
+ | verify\_peer | disable/enable peer verification (used with TLS) | false |
55
+ | request\_timeout | value in seconds indicating the reply wait timeout for an amqp request | 5 |
56
+
40
57
  ## Contributing
41
58
 
42
59
  1. Fork it
data/amqparty.gemspec CHANGED
@@ -19,12 +19,11 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_dependency "httparty", ">=0.10.0"
22
- spec.add_dependency "rack-amqp-client"
22
+ spec.add_dependency "rack-amqp-client", ">=0.0.3"
23
23
 
24
24
  spec.add_development_dependency "bundler", "~> 1.3"
25
25
  spec.add_development_dependency "rake"
26
- spec.add_development_dependency "rspec"
27
- spec.add_development_dependency "emoji-rspec"
26
+ spec.add_development_dependency "rspec", "~> 3.0"
28
27
  spec.add_development_dependency "simplecov"
29
28
  spec.add_development_dependency "pry"
30
29
  end
data/lib/amqparty.rb CHANGED
@@ -28,18 +28,40 @@ module AMQParty
28
28
  def self.perform_request(http_method, path, options, &block)
29
29
  raise AMQParty::UnconfiguredError.new if configuration.amqp_host.nil?
30
30
 
31
- options = default_options.dup.merge(options)
31
+ options = configuration.default_options.dup.merge(options)
32
32
  # TODO cookies support
33
33
  path = "#{path}/" if path =~ /\Aamqp?:\/\/([^\/])+\Z/
34
34
  Request.new(http_method, path, options).perform(&block)
35
35
  end
36
36
 
37
- def self.default_options
38
- {amqp_client_options: {host: configuration.amqp_host}}
39
- end
40
-
41
37
  class Configuration
42
38
  attr_accessor :amqp_host
39
+ attr_accessor :port
40
+ attr_accessor :request_timeout
41
+ attr_accessor :tls_ca_certificates
42
+ attr_accessor :verify_peer
43
+ attr_accessor :tls
44
+ attr_accessor :tls_key
45
+ attr_accessor :tls_cert
46
+ attr_accessor :username
47
+ attr_accessor :password
48
+
49
+ def default_options
50
+ {
51
+ amqp_client_options: {
52
+ host: amqp_host,
53
+ port: port || 5672,
54
+ tls_ca_certificates: tls_ca_certificates || [],
55
+ verify_peer: verify_peer || false,
56
+ tls: tls || false,
57
+ tls_key: tls_key,
58
+ tls_cert: tls_cert,
59
+ username: username || 'guest',
60
+ password: password || 'guest'
61
+ },
62
+ request_timeout: request_timeout || 5
63
+ }
64
+ end
43
65
  end
44
66
  end
45
67
 
@@ -13,26 +13,40 @@ module AMQParty
13
13
  chunked_body = nil
14
14
 
15
15
  path = "#{uri.host}#{uri.path}"
16
+ path = "#{path}?#{uri.query}" if uri.query
16
17
  connection_options = options[:amqp_client_options]
17
-
18
- #connection_options[:user] = uri.user if uri.user
19
- #connection_options[:password] = uri.password if uri.password
18
+ async = options[:async]
20
19
 
21
20
  Rack::AMQP::Client.with_client(connection_options) do |client|
22
21
  method_name = http_method.name.split(/::/).last.upcase
23
22
  body = options[:body] || ""
24
- body = HTTParty::HashConversions.to_params(options[:body]) if body.is_a?(Hash)
23
+
24
+ if body.is_a?(Hash)
25
+ body = HTTParty::HashConversions.to_params(options[:body])
26
+ end
27
+
25
28
  headers = options[:headers] || {}
29
+ timeout = options[:request_timeout]
26
30
 
27
- response = client.request(path, {body: body, http_method: method_name, headers: headers, timeout: 5})
31
+ response = client.request(path, {
32
+ body: body,
33
+ http_method: method_name,
34
+ headers: headers,
35
+ timeout: timeout,
36
+ async: !!async
37
+ }
38
+ )
28
39
 
29
- klass = Net::HTTPResponse.send(:response_class,response.response_code.to_s)
30
- http_response = klass.new("1.1", response.response_code, "Found")
40
+ response_code = response.response_code
41
+ klass = Net::HTTPResponse.send(:response_class, response_code.to_s)
42
+ http_response = klass.new("1.1", response_code, "Found")
31
43
  response.headers.each_pair do |key, value|
32
44
  http_response.add_field key, value
33
45
  end
34
46
  http_response.body = response.payload
35
- http_response.send(:instance_eval, "def body; @body; end") # TODO GIANT HACK
47
+
48
+ # TODO GIANT HACK
49
+ http_response.send(:instance_eval, "def body; @body; end")
36
50
  self.last_response = http_response
37
51
  end
38
52
 
@@ -1,3 +1,3 @@
1
1
  module AMQParty
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -38,34 +38,80 @@ describe AMQParty do
38
38
  end
39
39
  expect(AMQParty.configuration.amqp_host).to eq('localhost')
40
40
  end
41
+
42
+ it "allows configuration of a request timeout" do
43
+ AMQParty.configure do |c|
44
+ c.request_timeout = 10
45
+ end
46
+ expect(AMQParty.configuration.request_timeout).to eq(10)
47
+ end
48
+
41
49
  end
42
50
 
43
51
  describe '#get' do
44
52
 
53
+ before :each do
54
+ AMQParty.configure do |c|
55
+ c.amqp_host = 'localhost'
56
+ c.request_timeout = 55
57
+ end
58
+ end
59
+
60
+ let(:client) { double('Rack::AMQP::Client') }
61
+ let(:params) {
62
+ {
63
+ body: '',
64
+ http_method: 'GET',
65
+ headers: {},
66
+ timeout: 55,
67
+ async: false
68
+ }
69
+ }
70
+
71
+ let(:client_params) {
72
+ {
73
+ host: 'localhost',
74
+ port: 5672,
75
+ tls_ca_certificates: [],
76
+ verify_peer: false,
77
+ tls: false,
78
+ tls_key: nil,
79
+ tls_cert: nil,
80
+ username: 'guest',
81
+ password: 'guest'
82
+ }
83
+ }
84
+
45
85
  it_behaves_like 'all request methods', 'get'
46
86
 
47
87
  it 'calls Rack::AMQP::Client with the proper options' do
48
88
  # this method is a lot of stubbing, but I guess it's ok?
49
- fake_with_client = -> {
50
- fake_client = double()
51
- fake_client.should_receive(:request).with('test.simple/users.json', {
52
- body: '',
53
- http_method: 'GET',
54
- headers: {},
55
- timeout: 5
56
- }) do
57
- fake_response = double()
58
- fake_response.stub(:response_code) { 200 }
59
- fake_response.stub(:headers) { {'response_header' => 'foo'} }
60
- fake_response.stub(:payload) { 'Hello World' }
61
- fake_response
62
- end
63
- fake_client
64
- }
65
- expect(Rack::AMQP::Client).to receive(:client).with({host: 'localhost'}).and_return(&fake_with_client)
89
+ expect(client).to receive(:request).with('test.simple/users.json', params) do
90
+ response = double()
91
+ allow(response).to receive(:response_code) { 200 }
92
+ allow(response).to receive(:headers) { {'response_header' => 'foo'} }
93
+ allow(response).to receive(:payload) { 'Hello World' }
94
+ response
95
+ end
96
+
97
+ expect(Rack::AMQP::Client).to receive(:client).with(client_params).and_return(client)
66
98
  AMQParty.get('amqp://test.simple/users.json')
67
99
  end
68
100
 
101
+ it 'calls Rack::AMQP::Client with the correct path' do
102
+ # this mthod is a lot of stubbing, but I guess it's ok?
103
+ expect(client).to receive(:request).with('test.simple/users.json?login=foo', params) do
104
+ response = double()
105
+ allow(response).to receive(:response_code) { 200 }
106
+ allow(response).to receive(:headers) { {'response_header' => 'foo'} }
107
+ allow(response).to receive(:payload) { 'Hello World' }
108
+ response
109
+ end
110
+
111
+ expect(Rack::AMQP::Client).to receive(:client).with(client_params).and_return(client)
112
+ AMQParty.get('amqp://test.simple/users.json?login=foo')
113
+ end
114
+
69
115
  end
70
116
 
71
117
  it "integrates", brittle: true do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: amqparty
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Szmajda
@@ -9,118 +9,104 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-04-18 00:00:00.000000000 Z
12
+ date: 2014-11-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - '>='
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: 0.10.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - '>='
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: 0.10.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rack-amqp-client
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - '>='
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: '0'
34
+ version: 0.0.3
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - '>='
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: '0'
41
+ version: 0.0.3
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: bundler
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ~>
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
48
  version: '1.3'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ~>
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
55
  version: '1.3'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rake
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - '>='
60
+ - - ">="
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - '>='
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rspec
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - '>='
74
+ - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: '0'
76
+ version: '3.0'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - '>='
82
- - !ruby/object:Gem::Version
83
- version: '0'
84
- - !ruby/object:Gem::Dependency
85
- name: emoji-rspec
86
- requirement: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - '>='
81
+ - - "~>"
89
82
  - !ruby/object:Gem::Version
90
- version: '0'
91
- type: :development
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - '>='
96
- - !ruby/object:Gem::Version
97
- version: '0'
83
+ version: '3.0'
98
84
  - !ruby/object:Gem::Dependency
99
85
  name: simplecov
100
86
  requirement: !ruby/object:Gem::Requirement
101
87
  requirements:
102
- - - '>='
88
+ - - ">="
103
89
  - !ruby/object:Gem::Version
104
90
  version: '0'
105
91
  type: :development
106
92
  prerelease: false
107
93
  version_requirements: !ruby/object:Gem::Requirement
108
94
  requirements:
109
- - - '>='
95
+ - - ">="
110
96
  - !ruby/object:Gem::Version
111
97
  version: '0'
112
98
  - !ruby/object:Gem::Dependency
113
99
  name: pry
114
100
  requirement: !ruby/object:Gem::Requirement
115
101
  requirements:
116
- - - '>='
102
+ - - ">="
117
103
  - !ruby/object:Gem::Version
118
104
  version: '0'
119
105
  type: :development
120
106
  prerelease: false
121
107
  version_requirements: !ruby/object:Gem::Requirement
122
108
  requirements:
123
- - - '>='
109
+ - - ">="
124
110
  - !ruby/object:Gem::Version
125
111
  version: '0'
126
112
  description: AMQP-HTTP compliant replacement for HTTParty
@@ -130,9 +116,9 @@ executables: []
130
116
  extensions: []
131
117
  extra_rdoc_files: []
132
118
  files:
133
- - .gitignore
134
- - .rspec
135
- - .travis.yml
119
+ - ".gitignore"
120
+ - ".rspec"
121
+ - ".travis.yml"
136
122
  - CHANGELOG.md
137
123
  - Gemfile
138
124
  - LICENSE
@@ -156,12 +142,12 @@ require_paths:
156
142
  - lib
157
143
  required_ruby_version: !ruby/object:Gem::Requirement
158
144
  requirements:
159
- - - '>='
145
+ - - ">="
160
146
  - !ruby/object:Gem::Version
161
147
  version: '0'
162
148
  required_rubygems_version: !ruby/object:Gem::Requirement
163
149
  requirements:
164
- - - '>='
150
+ - - ">="
165
151
  - !ruby/object:Gem::Version
166
152
  version: '0'
167
153
  requirements: []