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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5b6bf490074eecb77f38826926df3d98ed41c346
4
- data.tar.gz: 6aa3894bd41fd4e01b7ed9dc4873443f8c741196
3
+ metadata.gz: bc7cc45319827cb82a264fb61ceace6834dbf103
4
+ data.tar.gz: 2567b70818ccd266a4f100316babdc87d49bb843
5
5
  SHA512:
6
- metadata.gz: b816181726162c1b342811f43d8e4f8f23f9772cf69728a7e9621e0f7ecd90efb3adf2ad52c3f5c8039481bac9f3349706c55233c5f23347feab71f8ebb8ba3c
7
- data.tar.gz: 3375538c04cd1793dd4364a8def79be7689a241c14ba7dc2265ebe5d83348481c6371c7fe9b354665b7eb635fe014a0173322335c643363426a32286b419db73
6
+ metadata.gz: a112edcd51ef627151a7a912ca37cebfa147da872fba09100e057867b034e1e03fbbefefdeb3824c244ff6f62a63e619d935e926496eed4de92becd78e9d71bd
7
+ data.tar.gz: 35a7319003642836e744793143ec523dce07c15e7ef12eede6a0ecf61eca102adc22191427d9a6025e034af569ca5609a8c58422b3a7bc6627e020dc74bde53d
data/Guardfile ADDED
@@ -0,0 +1,13 @@
1
+ notification :gntp
2
+
3
+ guard :rspec, cmd: "bundle exec rspec" do
4
+ # watch /lib/ files
5
+ watch(%r{^lib/(.+).rb$}) do |m|
6
+ "spec/#{m[1]}_spec.rb"
7
+ end
8
+
9
+ # watch /spec/ files
10
+ watch(%r{^spec/(.+).rb$}) do |m|
11
+ "spec/#{m[1]}.rb"
12
+ end
13
+ end
data/README.md CHANGED
@@ -5,10 +5,10 @@
5
5
  [![Build](https://img.shields.io/travis-ci/ChrisMacNaughton/muxer.svg?style=flat-square)](https://travis-ci.org/ChrisMacNaughton/muxer)
6
6
  [![Dependencies](https://img.shields.io/gemnasium/ChrisMacNaughton/muxer.svg?style=flat-square)](https://gemnasium.com/ChrisMacNaughton/muxer)
7
7
  [![Docs](https://inch-ci.org/github/ChrisMacNaughton/muxer.svg?branch=master)](http://inch-ci.org/github/ChrisMacNaughton/muxer/branch/master)
8
+ [![Issues](https://img.shields.io/github/issues/ChrisMacNaughton/muxer.svg?style=flat-square)](https://github.com/ChrisMacNaughton/muxer/issues)
8
9
  [![Downloads](https://img.shields.io/gem/dtv/muxer.svg?style=flat-square)](https://rubygems.org/gems/muxer)
9
10
  [![Tags](https://img.shields.io/github/tag/ChrisMacNaughton/muxer.svg?style=flat-square)](https://github.com/ChrisMacNaughton/muxer/tags)
10
11
  [![Releases](https://img.shields.io/github/release/ChrisMacNaughton/muxer.svg?style=flat-square)](https://github.com/ChrisMacNaughton/muxer/releases)
11
- [![Issues](https://img.shields.io/github/issues/ChrisMacNaughton/muxer.svg?style=flat-square)](https://github.com/ChrisMacNaughton/muxer/issues)
12
12
  [![License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](https://opensource.org/licenses/MIT)
13
13
  [![Version](https://img.shields.io/gem/v/muxer.svg?style=flat-square)](https://rubygems.org/gems/muxer)
14
14
 
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Muxer
2
- VERSION = '0.3.0'
2
+ VERSION = '0.3.2'
3
3
  end
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
@@ -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.0
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-22 00:00:00.000000000 Z
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