muxer 0.3.0 → 0.3.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 +4 -4
- data/Guardfile +13 -0
- data/README.md +1 -1
- data/lib/muxer/multiplexer.rb +5 -2
- data/lib/muxer/request.rb +4 -1
- data/lib/muxer/version.rb +1 -1
- data/muxer.gemspec +3 -0
- data/spec/muxer/request_spec.rb +6 -0
- data/spec/muxer_spec.rb +11 -1
- metadata +45 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc7cc45319827cb82a264fb61ceace6834dbf103
|
4
|
+
data.tar.gz: 2567b70818ccd266a4f100316babdc87d49bb843
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a112edcd51ef627151a7a912ca37cebfa147da872fba09100e057867b034e1e03fbbefefdeb3824c244ff6f62a63e619d935e926496eed4de92becd78e9d71bd
|
7
|
+
data.tar.gz: 35a7319003642836e744793143ec523dce07c15e7ef12eede6a0ecf61eca102adc22191427d9a6025e034af569ca5609a8c58422b3a7bc6627e020dc74bde53d
|
data/Guardfile
ADDED
data/README.md
CHANGED
@@ -5,10 +5,10 @@
|
|
5
5
|
[](https://travis-ci.org/ChrisMacNaughton/muxer)
|
6
6
|
[](https://gemnasium.com/ChrisMacNaughton/muxer)
|
7
7
|
[](http://inch-ci.org/github/ChrisMacNaughton/muxer/branch/master)
|
8
|
+
[](https://github.com/ChrisMacNaughton/muxer/issues)
|
8
9
|
[](https://rubygems.org/gems/muxer)
|
9
10
|
[](https://github.com/ChrisMacNaughton/muxer/tags)
|
10
11
|
[](https://github.com/ChrisMacNaughton/muxer/releases)
|
11
|
-
[](https://github.com/ChrisMacNaughton/muxer/issues)
|
12
12
|
[](https://opensource.org/licenses/MIT)
|
13
13
|
[](https://rubygems.org/gems/muxer)
|
14
14
|
|
data/lib/muxer/multiplexer.rb
CHANGED
@@ -39,7 +39,7 @@ module Muxer
|
|
39
39
|
options.keys.each do |key|
|
40
40
|
options[key.to_sym] = options.delete(key)
|
41
41
|
end
|
42
|
-
options = {timeout: nil, method: :get, params: {}, redirects: nil}.merge(options)
|
42
|
+
options = {timeout: nil, method: :get, params: {}, redirects: nil, id: nil}.merge(options)
|
43
43
|
timeout =
|
44
44
|
request = Request.new
|
45
45
|
request.url = url
|
@@ -72,7 +72,7 @@ module Muxer
|
|
72
72
|
#
|
73
73
|
# @return [Hash] Keys are :succeeded, :failed
|
74
74
|
def execute
|
75
|
-
@responses = {succeeded: [], failed: [], pending: []}
|
75
|
+
@responses = {succeeded: [], failed: [], pending: [], succeeded_by_id: {}}
|
76
76
|
@start = Time.now
|
77
77
|
EventMachine.run do
|
78
78
|
requests.each do |request|
|
@@ -104,6 +104,9 @@ module Muxer
|
|
104
104
|
@responses[:pending].delete(pending)
|
105
105
|
if pending.error.nil?
|
106
106
|
@responses[:succeeded] << pending
|
107
|
+
if pending.id
|
108
|
+
@responses[:succeeded_by_id][pending.id] = pending
|
109
|
+
end
|
107
110
|
else
|
108
111
|
@responses[:failed] << pending
|
109
112
|
end
|
data/lib/muxer/request.rb
CHANGED
@@ -18,8 +18,11 @@ module Muxer
|
|
18
18
|
# @return [Boolean] Is the request completed
|
19
19
|
# @!attribute error
|
20
20
|
# @return [Boolean] Have we had an error?
|
21
|
+
# @!attribute id
|
22
|
+
# @return [Symbol] ID for this request, the ID is arbitrary and to
|
23
|
+
# be assigned by the user
|
21
24
|
class Request
|
22
|
-
attr_accessor :url, :timeout, :headers, :params, :redirects
|
25
|
+
attr_accessor :url, :timeout, :headers, :params, :redirects, :id
|
23
26
|
attr_reader :method, :completed, :error
|
24
27
|
|
25
28
|
alias_method :completed?, :completed
|
data/lib/muxer/version.rb
CHANGED
data/muxer.gemspec
CHANGED
@@ -27,5 +27,8 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.add_development_dependency "vcr", "~>2.9"
|
28
28
|
spec.add_development_dependency "pry", "~>0.10"
|
29
29
|
spec.add_development_dependency "webmock", "~>1.20"
|
30
|
+
spec.add_development_dependency "guard"
|
31
|
+
spec.add_development_dependency "guard-rspec"
|
32
|
+
spec.add_development_dependency "ruby_gntp"
|
30
33
|
spec.add_development_dependency "codeclimate-test-reporter"
|
31
34
|
end
|
data/spec/muxer/request_spec.rb
CHANGED
@@ -22,6 +22,12 @@ RSpec.describe Muxer::Request do
|
|
22
22
|
expect(request.headers).to eq({api_key: 'test1234'})
|
23
23
|
end
|
24
24
|
|
25
|
+
it 'has an id' do
|
26
|
+
request.id = :test
|
27
|
+
|
28
|
+
expect(request.id).to eq(:test)
|
29
|
+
end
|
30
|
+
|
25
31
|
describe :method do
|
26
32
|
it 'has a valid method' do
|
27
33
|
request.method = 'POST'
|
data/spec/muxer_spec.rb
CHANGED
@@ -13,6 +13,17 @@ RSpec.describe Muxer, "execute" do
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
+
it 'can make a request with an id' do
|
17
|
+
VCR.use_cassette('muxer/makes_a_web_request') do
|
18
|
+
response = Muxer.execute do |muxer|
|
19
|
+
muxer.add_url "http://www.rubydoc.info", {id: :rubydoc}
|
20
|
+
end
|
21
|
+
|
22
|
+
expect(response[:succeeded_by_id]).to be_kind_of(Array)
|
23
|
+
expect(response[:succeeded_by_id][:rubydoc].url).to eq('http://www.rubydoc.info')
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
16
27
|
it 'can make multiple web requests' do
|
17
28
|
VCR.use_cassette('muxer/makes_multiple_web_requests') do
|
18
29
|
response = Muxer.execute do |muxer|
|
@@ -109,5 +120,4 @@ RSpec.describe Muxer, "execute" do
|
|
109
120
|
end
|
110
121
|
end
|
111
122
|
|
112
|
-
|
113
123
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: muxer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris MacNaughton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eventmachine
|
@@ -122,6 +122,48 @@ dependencies:
|
|
122
122
|
- - ~>
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '1.20'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: guard
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: guard-rspec
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - '>='
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - '>='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: ruby_gntp
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - '>='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
125
167
|
- !ruby/object:Gem::Dependency
|
126
168
|
name: codeclimate-test-reporter
|
127
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -148,6 +190,7 @@ files:
|
|
148
190
|
- .rspec
|
149
191
|
- .travis.yml
|
150
192
|
- Gemfile
|
193
|
+
- Guardfile
|
151
194
|
- LICENSE.txt
|
152
195
|
- README.md
|
153
196
|
- Rakefile
|