neighborparrot 0.3.3 → 0.3.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.
data/Gemfile CHANGED
@@ -3,12 +3,15 @@ source "http://rubygems.org"
3
3
  gem 'eventmachine'
4
4
  gem 'em-http-request'
5
5
  gem 'em-eventsource'
6
+ gem 'bson_ext'
7
+ gem 'ruby-hmac'
8
+ gem 'signature'
6
9
 
7
10
  group :development do
8
- gem "rspec", "~> 2.3.0"
9
- gem "bundler", "~> 1.0.0"
11
+ gem "rspec"
12
+ gem "bundler"
10
13
  gem "jeweler", "~> 1.6.4"
11
- gem "rcov", ">= 0"
14
+ gem "simplecov"
12
15
  end
13
16
 
14
17
 
data/Gemfile.lock CHANGED
@@ -2,15 +2,20 @@ GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
4
  addressable (2.2.6)
5
+ bson (1.5.2)
6
+ bson_ext (1.5.2)
7
+ bson (= 1.5.2)
8
+ cookiejar (0.3.0)
5
9
  diff-lcs (1.1.3)
6
10
  em-eventsource (0.1.5)
7
11
  em-http-request (~> 1.0.0)
8
12
  eventmachine (~> 1.0.0.beta3)
9
- em-http-request (1.0.0)
13
+ em-http-request (1.0.1)
10
14
  addressable (>= 2.2.3)
15
+ cookiejar
11
16
  em-socksify
12
- eventmachine (>= 1.0.0.beta.3)
13
- http_parser.rb (>= 0.5.2)
17
+ eventmachine (>= 1.0.0.beta.4)
18
+ http_parser.rb (>= 0.5.3)
14
19
  em-socksify (0.1.0)
15
20
  eventmachine
16
21
  eventmachine (1.0.0.beta.4)
@@ -23,26 +28,36 @@ GEM
23
28
  bundler (~> 1.0)
24
29
  git (>= 1.2.5)
25
30
  rake
31
+ multi_json (1.0.4)
26
32
  rake (0.9.2.2)
27
- rcov (0.9.11)
28
- rspec (2.3.0)
29
- rspec-core (~> 2.3.0)
30
- rspec-expectations (~> 2.3.0)
31
- rspec-mocks (~> 2.3.0)
32
- rspec-core (2.3.1)
33
- rspec-expectations (2.3.0)
33
+ rspec (2.8.0)
34
+ rspec-core (~> 2.8.0)
35
+ rspec-expectations (~> 2.8.0)
36
+ rspec-mocks (~> 2.8.0)
37
+ rspec-core (2.8.0)
38
+ rspec-expectations (2.8.0)
34
39
  diff-lcs (~> 1.1.2)
35
- rspec-mocks (2.3.0)
40
+ rspec-mocks (2.8.0)
41
+ ruby-hmac (0.4.0)
42
+ signature (0.1.2)
43
+ ruby-hmac
44
+ simplecov (0.5.4)
45
+ multi_json (~> 1.0.3)
46
+ simplecov-html (~> 0.5.3)
47
+ simplecov-html (0.5.3)
36
48
 
37
49
  PLATFORMS
38
50
  ruby
39
51
 
40
52
  DEPENDENCIES
41
- bundler (~> 1.0.0)
53
+ bson_ext
54
+ bundler
42
55
  em-eventsource
43
56
  em-http-request
44
57
  eventmachine
45
58
  faker
46
59
  jeweler (~> 1.6.4)
47
- rcov
48
- rspec (~> 2.3.0)
60
+ rspec
61
+ ruby-hmac
62
+ signature
63
+ simplecov
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.3
1
+ 0.3.4
@@ -3,6 +3,7 @@ require 'uri'
3
3
  require 'neighborparrot/config'
4
4
  require 'neighborparrot/callbacks'
5
5
  require 'neighborparrot/reactor'
6
+ require 'neighborparrot/auth'
6
7
  require 'neighborparrot/send'
7
8
  require 'neighborparrot/open'
8
9
  require 'neighborparrot/helpers/url_helpers'
@@ -0,0 +1,21 @@
1
+ require 'hmac-sha2'
2
+ require 'signature'
3
+
4
+ module Neighborparrot
5
+ def self.sign_connect_request(query, params={})
6
+ endpoint = query[:service] == 'es' ? '/open' : '/ws'
7
+ sign_request('GET', endpoint, query, params)
8
+ end
9
+
10
+ def self.sign_send_request(body, params={})
11
+ sign_request('POST', '/send',body, params)
12
+ end
13
+
14
+ def self.sign_request(method, path, request, params={})
15
+ params = Neighborparrot.configuration.merge params
16
+ token = Signature::Token.new(params[:api_id], params[:api_key])
17
+ sign_request = Signature::Request.new(method, path, request)
18
+ auth_hash = sign_request.sign(token)
19
+ request.merge(auth_hash)
20
+ end
21
+ end
@@ -38,14 +38,15 @@ module Neighborparrot
38
38
  end
39
39
 
40
40
 
41
- # Chen mandatory parameters
41
+ # Check mandatory parameters
42
42
  # @param [Hash] parameters
43
43
  # @param [Symbol] action [:send/:open]
44
44
  def check_params(p, action=:send)
45
- trigger_on_error "Channel can't be nil" if p[:channel].nil? || p[:channel].length == 0
46
- trigger_on_error "ERROR# Neighborparrot: api_id can't be nil" if p[:api_id].nil? || p[:api_id].length == 0
47
- if action == :send
48
- trigger_on_error "ERROR# Neighborparrot: api_key can't be nil" if p[:api_key].nil? || p[:api_key].length == 0
45
+ trigger_error "Channel can't be nil" if p[:channel].nil? || p[:channel].length == 0
46
+ trigger_error "ERROR# Neighborparrot: api_id can't be nil" if p[:api_id].nil? || p[:api_id].length == 0
47
+ trigger_error "ERROR# Neighborparrot: api_key can't be nil" if p[:api_key].nil? || p[:api_key].length == 0
48
+ if action == :open
49
+ trigger_error "ERROR# Neighborparrot: socket_id can't be nil" if p[:socket_id].nil? || p[:socket_id].length == 0
49
50
  end
50
51
  true
51
52
  end
@@ -19,15 +19,16 @@ module Neighborparrot
19
19
  return unless check_params params, :post
20
20
  return if dummy_connections?
21
21
  uri = URI.parse(params[:server])
22
- channel = params[:channel]
23
22
  url = "#{params[:server]}/open"
24
-
25
- @source = EM::EventSource.new(url, :channel => channel )
23
+ request = {:channel => params[:channel], :socket_id => params[:socket_id]}
24
+ signed_request = Neighborparrot.sign_connect_request(request, params)
25
+ @source = EM::EventSource.new(url, signed_request)
26
26
  @source.inactivity_timeout = 120
27
27
  @source.message do |message|
28
28
  EM.next_tick { trigger_message message }
29
29
  end
30
30
  @source.error do |error|
31
+ puts "Error #{error}"
31
32
  EM.next_tick { trigger_error error }
32
33
  end
33
34
 
@@ -68,15 +68,13 @@ module Neighborparrot
68
68
 
69
69
  # Send a message to a channel
70
70
  # If empty data, refuse to send nothing
71
- # @param [Hash] params
72
- # * :api_id => Your api ID in neighborparrot.com
73
- # * :api_key => Your api key
74
- # * :server => Server to connect (Only for development)
71
+ # @request [Hash] params
75
72
  # * :channel => The channel name
76
73
  # * :data => Your payload
74
+ # @params optional parameters
77
75
  # @return [Boolean] true if sended
78
- def send(params)
79
- EM.schedule { @out_queue.push params }
76
+ def send(request, params={})
77
+ EM.schedule { @out_queue.push({ :request => request, :params => params }) }
80
78
  end
81
79
 
82
80
 
@@ -92,7 +90,12 @@ module Neighborparrot
92
90
  return init_queue unless @out_queue
93
91
  end
94
92
  @em_thread = Thread.new {
95
- EM.run { init_queue }
93
+ EM.run do
94
+ EM.error_handler{ |e|
95
+ puts "Error raised during event loop: #{e.message} , #{e}"
96
+ }
97
+ init_queue
98
+ end
96
99
  }
97
100
  end
98
101
 
@@ -7,9 +7,9 @@ module Neighborparrot
7
7
  # If you start a module reactor in some point in your program
8
8
  # the request is scheduled in this reactor and return
9
9
  # the control to your program. Module callbacks are used in this case.
10
- def self.send(params={})
10
+ def self.send(request, params={})
11
11
  if self.reactor_running?
12
- return @@class_reactor.send params
12
+ return @@class_reactor.send request, params
13
13
  end
14
14
  response = nil
15
15
  error = false
@@ -23,21 +23,27 @@ module Neighborparrot
23
23
  response = resp
24
24
  parrot.stop
25
25
  end
26
- parrot.send params
26
+ # Skip reactor queues
27
+ parrot.send_to_broker request, params
27
28
  end
28
29
  fail error if error
29
30
  return response
30
31
  end
31
32
 
32
- private
33
33
  # Send the message to the broker
34
- def send_to_broker(params={})
35
- params = Neighborparrot.configuration.merge params
36
- return unless check_params params
37
- return if params[:data].nil? || params[:data].length == 0
34
+ # This is the final step of a send request in the reactor process
35
+ def send_to_broker(options)
36
+ params = Neighborparrot.configuration.merge options[:params]
37
+ request = options[:request]
38
+ # TODO: Refactor
39
+ # return unless check_params request
40
+ return if request[:data].nil? || request[:data].length == 0
38
41
  return if params[:dummy_connections]
42
+
43
+ signed_request = Neighborparrot.sign_send_request request, params
44
+
39
45
  url = "#{params[:server]}/send"
40
- http = EventMachine::HttpRequest.new(url).post :body => params
46
+ http = EventMachine::HttpRequest.new(url).post :body => signed_request
41
47
  http.errback{ |msg| trigger_error msg }
42
48
  http.callback do
43
49
  if http.response_header.status == 200
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "neighborparrot"
8
- s.version = "0.3.3"
8
+ s.version = "0.3.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Eloy Gomez"]
12
- s.date = "2012-01-11"
12
+ s.date = "2012-02-01"
13
13
  s.description = "Send messages to the neighborparrot event source service"
14
14
  s.email = "eloy@indeos.es"
15
15
  s.extra_rdoc_files = [
@@ -26,6 +26,7 @@ Gem::Specification.new do |s|
26
26
  "Rakefile",
27
27
  "VERSION",
28
28
  "lib/neighborparrot.rb",
29
+ "lib/neighborparrot/auth.rb",
29
30
  "lib/neighborparrot/callbacks.rb",
30
31
  "lib/neighborparrot/config.rb",
31
32
  "lib/neighborparrot/helpers/url_helpers.rb",
@@ -42,7 +43,7 @@ Gem::Specification.new do |s|
42
43
  s.homepage = "http://neighborparrot.com"
43
44
  s.licenses = ["MIT"]
44
45
  s.require_paths = ["lib"]
45
- s.rubygems_version = "1.8.10"
46
+ s.rubygems_version = "1.8.11"
46
47
  s.summary = "Ruby client for the Neighborparrot"
47
48
 
48
49
  if s.respond_to? :specification_version then
@@ -52,27 +53,36 @@ Gem::Specification.new do |s|
52
53
  s.add_runtime_dependency(%q<eventmachine>, [">= 0"])
53
54
  s.add_runtime_dependency(%q<em-http-request>, [">= 0"])
54
55
  s.add_runtime_dependency(%q<em-eventsource>, [">= 0"])
55
- s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
56
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
56
+ s.add_runtime_dependency(%q<bson_ext>, [">= 0"])
57
+ s.add_runtime_dependency(%q<ruby-hmac>, [">= 0"])
58
+ s.add_runtime_dependency(%q<signature>, [">= 0"])
59
+ s.add_development_dependency(%q<rspec>, [">= 0"])
60
+ s.add_development_dependency(%q<bundler>, [">= 0"])
57
61
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
58
- s.add_development_dependency(%q<rcov>, [">= 0"])
62
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
59
63
  else
60
64
  s.add_dependency(%q<eventmachine>, [">= 0"])
61
65
  s.add_dependency(%q<em-http-request>, [">= 0"])
62
66
  s.add_dependency(%q<em-eventsource>, [">= 0"])
63
- s.add_dependency(%q<rspec>, ["~> 2.3.0"])
64
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
67
+ s.add_dependency(%q<bson_ext>, [">= 0"])
68
+ s.add_dependency(%q<ruby-hmac>, [">= 0"])
69
+ s.add_dependency(%q<signature>, [">= 0"])
70
+ s.add_dependency(%q<rspec>, [">= 0"])
71
+ s.add_dependency(%q<bundler>, [">= 0"])
65
72
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
66
- s.add_dependency(%q<rcov>, [">= 0"])
73
+ s.add_dependency(%q<simplecov>, [">= 0"])
67
74
  end
68
75
  else
69
76
  s.add_dependency(%q<eventmachine>, [">= 0"])
70
77
  s.add_dependency(%q<em-http-request>, [">= 0"])
71
78
  s.add_dependency(%q<em-eventsource>, [">= 0"])
72
- s.add_dependency(%q<rspec>, ["~> 2.3.0"])
73
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
79
+ s.add_dependency(%q<bson_ext>, [">= 0"])
80
+ s.add_dependency(%q<ruby-hmac>, [">= 0"])
81
+ s.add_dependency(%q<signature>, [">= 0"])
82
+ s.add_dependency(%q<rspec>, [">= 0"])
83
+ s.add_dependency(%q<bundler>, [">= 0"])
74
84
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
75
- s.add_dependency(%q<rcov>, [">= 0"])
85
+ s.add_dependency(%q<simplecov>, [">= 0"])
76
86
  end
77
87
  end
78
88
 
@@ -2,10 +2,11 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe "Neighborparrot::ESParrot" do
4
4
  before :all do
5
- api_id = 'test-id'
6
- api_key = 'api_key'
7
- Neighborparrot.configure({ :api_id => api_id, :api_key => :api_key })
8
- @channel = 'test'
5
+ api_id = '7b6632eb-1345-4431-81d6-27744845a7c2'
6
+ api_key = '39aa7d81-8f6a-4885-a254-335dcf7dc8f7'
7
+ @socket_id = '1234'
8
+ Neighborparrot.configure(:api_id => api_id, :api_key => api_key)
9
+ @channel = 'spec-test'
9
10
  end
10
11
 
11
12
  before :each do
@@ -23,7 +24,7 @@ describe "Neighborparrot::ESParrot" do
23
24
  @parrot.on_connect do
24
25
  connected = true
25
26
  end
26
- @parrot.open(:channel => @channel)
27
+ @parrot.open(:channel => @channel, :socket_id => @socket_id)
27
28
  sleep 1
28
29
  connected.should be_true
29
30
  end
@@ -33,23 +34,23 @@ describe "Neighborparrot::ESParrot" do
33
34
  @parrot.on_message do |msg|
34
35
  received = msg
35
36
  end
36
- @parrot.open(:channel => @channel)
37
+ @parrot.open(:channel => @channel, :socket_id => @socket_id)
37
38
 
38
39
  text = Faker::Lorem.paragraph(30)
39
- @parrot.send(:channel => 'test', :data => text)
40
+ @parrot.send(:channel => @channel, :data => text)
40
41
  sleep 1
41
42
  received.should eq text
42
43
  end
43
44
 
44
45
  it "should return false if already a connection active" do
45
- @parrot.open(:channel => @channel)
46
+ @parrot.open(:channel => @channel, :socket_id => @socket_id)
46
47
  @parrot.open(:channel => 'other test').should be_false
47
48
  end
48
49
  end
49
50
 
50
51
  describe "Neighborparrot::ESParrot#close" do
51
52
  it "should close a connection" do
52
- @parrot.open(:channel => @channel)
53
+ @parrot.open(:channel => @channel, :socket_id => @socket_id)
53
54
  @parrot.stop
54
55
  @parrot.connected?.should be_false
55
56
  end
@@ -62,7 +63,7 @@ describe "Neighborparrot::ESParrot" do
62
63
  end
63
64
 
64
65
  it "should be true when connected" do
65
- @parrot.open(:channel => @channel)
66
+ @parrot.open(:channel => @channel, :socket_id => @socket_id)
66
67
  sleep 2
67
68
  @parrot.connected?.should be_true
68
69
  @parrot.close
data/spec/spec_helper.rb CHANGED
@@ -2,6 +2,8 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
2
  $LOAD_PATH.unshift(File.dirname(__FILE__))
3
3
  require 'rspec'
4
4
  require 'faker'
5
+ require 'hmac-sha2'
6
+ require 'signature'
5
7
 
6
8
  require File.expand_path(File.dirname(__FILE__) + '/../lib/neighborparrot')
7
9
 
@@ -10,7 +12,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../lib/neighborparrot')
10
12
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
11
13
 
12
14
  # Setup server on localhost
13
- # Neighborparrot.configure :server => 'http://127.0.0.1:9000'
15
+ Neighborparrot.configure :server => 'http://127.0.0.1:9000'
14
16
 
15
17
  RSpec.configure do |config|
16
18
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neighborparrot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-11 00:00:00.000000000Z
12
+ date: 2012-02-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: eventmachine
16
- requirement: &28945400 !ruby/object:Gem::Requirement
16
+ requirement: &80693500 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *28945400
24
+ version_requirements: *80693500
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: em-http-request
27
- requirement: &28944760 !ruby/object:Gem::Requirement
27
+ requirement: &80689840 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *28944760
35
+ version_requirements: *80689840
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: em-eventsource
38
- requirement: &28943860 !ruby/object:Gem::Requirement
38
+ requirement: &80712050 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,32 +43,65 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *28943860
46
+ version_requirements: *80712050
47
+ - !ruby/object:Gem::Dependency
48
+ name: bson_ext
49
+ requirement: &80708470 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *80708470
58
+ - !ruby/object:Gem::Dependency
59
+ name: ruby-hmac
60
+ requirement: &80810390 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: *80810390
69
+ - !ruby/object:Gem::Dependency
70
+ name: signature
71
+ requirement: &80807390 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: *80807390
47
80
  - !ruby/object:Gem::Dependency
48
81
  name: rspec
49
- requirement: &28942880 !ruby/object:Gem::Requirement
82
+ requirement: &80941980 !ruby/object:Gem::Requirement
50
83
  none: false
51
84
  requirements:
52
- - - ~>
85
+ - - ! '>='
53
86
  - !ruby/object:Gem::Version
54
- version: 2.3.0
87
+ version: '0'
55
88
  type: :development
56
89
  prerelease: false
57
- version_requirements: *28942880
90
+ version_requirements: *80941980
58
91
  - !ruby/object:Gem::Dependency
59
92
  name: bundler
60
- requirement: &28942180 !ruby/object:Gem::Requirement
93
+ requirement: &80940920 !ruby/object:Gem::Requirement
61
94
  none: false
62
95
  requirements:
63
- - - ~>
96
+ - - ! '>='
64
97
  - !ruby/object:Gem::Version
65
- version: 1.0.0
98
+ version: '0'
66
99
  type: :development
67
100
  prerelease: false
68
- version_requirements: *28942180
101
+ version_requirements: *80940920
69
102
  - !ruby/object:Gem::Dependency
70
103
  name: jeweler
71
- requirement: &28940820 !ruby/object:Gem::Requirement
104
+ requirement: &80940000 !ruby/object:Gem::Requirement
72
105
  none: false
73
106
  requirements:
74
107
  - - ~>
@@ -76,10 +109,10 @@ dependencies:
76
109
  version: 1.6.4
77
110
  type: :development
78
111
  prerelease: false
79
- version_requirements: *28940820
112
+ version_requirements: *80940000
80
113
  - !ruby/object:Gem::Dependency
81
- name: rcov
82
- requirement: &28940060 !ruby/object:Gem::Requirement
114
+ name: simplecov
115
+ requirement: &80938470 !ruby/object:Gem::Requirement
83
116
  none: false
84
117
  requirements:
85
118
  - - ! '>='
@@ -87,7 +120,7 @@ dependencies:
87
120
  version: '0'
88
121
  type: :development
89
122
  prerelease: false
90
- version_requirements: *28940060
123
+ version_requirements: *80938470
91
124
  description: Send messages to the neighborparrot event source service
92
125
  email: eloy@indeos.es
93
126
  executables: []
@@ -105,6 +138,7 @@ files:
105
138
  - Rakefile
106
139
  - VERSION
107
140
  - lib/neighborparrot.rb
141
+ - lib/neighborparrot/auth.rb
108
142
  - lib/neighborparrot/callbacks.rb
109
143
  - lib/neighborparrot/config.rb
110
144
  - lib/neighborparrot/helpers/url_helpers.rb
@@ -132,7 +166,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
132
166
  version: '0'
133
167
  segments:
134
168
  - 0
135
- hash: 96556740036397666
169
+ hash: -150390895
136
170
  required_rubygems_version: !ruby/object:Gem::Requirement
137
171
  none: false
138
172
  requirements:
@@ -141,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
141
175
  version: '0'
142
176
  requirements: []
143
177
  rubyforge_project:
144
- rubygems_version: 1.8.10
178
+ rubygems_version: 1.8.11
145
179
  signing_key:
146
180
  specification_version: 3
147
181
  summary: Ruby client for the Neighborparrot