neighborparrot 0.3.4 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -1,6 +1,6 @@
1
- = neighborparrot
2
-
3
- Description goes here.
1
+ = Neighborparrot ruby client
2
+ Ruby client for the NeighborParrot hosted broker service. You must create a free account in http://nbparrot.com before in order to get an api_id and api_key. This client allow you to send messages to WebSocket and EventSource channels and open EventSource connections.
3
+ Can be used in sync and async way.
4
4
 
5
5
  == Contributing to neighborparrot
6
6
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.4
1
+ 0.3.5
@@ -0,0 +1,24 @@
1
+ require 'neighborparrot'
2
+
3
+ api_id = 'your_api_id'
4
+ api_key = 'your_api_key'
5
+
6
+ Neighborparrot.configure(:api_id => api_id, :api_key => api_key)
7
+
8
+ # Callback for message received
9
+ Neighborparrot.on_message do |msg|
10
+ puts "Message received: #{msg}"
11
+ end
12
+
13
+ # Error callback
14
+ Neighborparrot.on_error do |error|
15
+ puts "Error!: #{error}"
16
+ end
17
+
18
+ # Callback for connection open
19
+ Neighborparrot.on_connect do
20
+ puts "Connection open"
21
+ end
22
+
23
+ # Open the Neighborparrot Connection
24
+ Neighborparrot.open(:channel => 'test', :service => 'es')
@@ -0,0 +1,16 @@
1
+ require 'neighborparrot'
2
+
3
+ api_id = 'your_api_id'
4
+ api_key = 'your_api_key'
5
+
6
+ # Setup api_id and api_key
7
+ Neighborparrot.configure(:api_id => api_id, :api_key => api_key)
8
+
9
+ # We can configure an error callback
10
+ Neighborparrot.on_error do |error|
11
+ puts "Error: #{error}"
12
+ end
13
+
14
+ # Send the message
15
+ message_id = Neighborparrot.send(:channel => 'test', :data => 'hello world')
16
+ puts "Sent with message_id: #{message_id}"
@@ -14,7 +14,8 @@ module Neighborparrot
14
14
  @@module_event_block[event] = block
15
15
  end
16
16
  clazz.send :define_method, "trigger_#{event}" do |*args|
17
- @@module_event_block[event].call *args
17
+ block = @@module_event_block[event]
18
+ block.call *args if block
18
19
  end
19
20
  end
20
21
  end
@@ -14,13 +14,12 @@ module Neighborparrot
14
14
  # * :api_id => Your api ID in neighborparrot.com
15
15
  # * :api_key => Your api key
16
16
  # * :server => Server to connect (Only for development)
17
- def open_connection(params)
17
+ def open_connection(request, params={})
18
18
  params = Neighborparrot.configuration.merge params
19
- return unless check_params params, :post
19
+ return unless check_params request.merge(params), :post
20
20
  return if dummy_connections?
21
21
  uri = URI.parse(params[:server])
22
22
  url = "#{params[:server]}/open"
23
- request = {:channel => params[:channel], :socket_id => params[:socket_id]}
24
23
  signed_request = Neighborparrot.sign_connect_request(request, params)
25
24
  @source = EM::EventSource.new(url, signed_request)
26
25
  @source.inactivity_timeout = 120
@@ -49,19 +48,23 @@ module Neighborparrot
49
48
  end
50
49
 
51
50
  # Static helper. Create a EM Reactor and open the connexion on it
52
- def self.open(params={})
51
+ def self.open(request, params={}, &block)
52
+ EM.error_handler { |error| Neighborparrot.trigger_error error }
53
+
53
54
  EM.run do
55
+
54
56
  parrot = Neighborparrot::Reactor.new
57
+
55
58
  parrot.on_error do |error|
56
- puts "Error: #{error}"
59
+ Neighborparrot.trigger_error error
57
60
  EM.stop
58
61
  end
59
62
  parrot.on_message do |message|
60
- puts "Received: #{message}"
63
+ Neighborparrot.trigger_message message
61
64
  end
62
- parrot.on_connect { puts "Connected" }
65
+ parrot.on_connect { Neighborparrot.trigger_connect }
63
66
 
64
- parrot.open params
67
+ parrot.open request, params
65
68
  end
66
69
  end
67
70
  end
@@ -79,8 +79,8 @@ module Neighborparrot
79
79
 
80
80
 
81
81
  # Open a Event Source connection with the broker
82
- def open(params)
83
- EM.schedule { open_connection params }
82
+ def open(request, params={})
83
+ EM.schedule { open_connection request, params }
84
84
  end
85
85
 
86
86
  private
@@ -91,9 +91,7 @@ module Neighborparrot
91
91
  end
92
92
  @em_thread = Thread.new {
93
93
  EM.run do
94
- EM.error_handler{ |e|
95
- puts "Error raised during event loop: #{e.message} , #{e}"
96
- }
94
+ EM.error_handler{ |e| trigger_error e }
97
95
  init_queue
98
96
  end
99
97
  }
@@ -20,11 +20,12 @@ module Neighborparrot
20
20
  parrot.stop
21
21
  end
22
22
  parrot.on_success do |resp|
23
+ Neighborparrot.trigger_success resp
23
24
  response = resp
24
25
  parrot.stop
25
26
  end
26
27
  # Skip reactor queues
27
- parrot.send_to_broker request, params
28
+ parrot.send_to_broker(:request => request, :params => params)
28
29
  end
29
30
  fail error if error
30
31
  return response
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "neighborparrot"
8
- s.version = "0.3.4"
8
+ s.version = "0.3.5"
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-02-01"
12
+ s.date = "2012-02-04"
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 = [
@@ -25,6 +25,8 @@ Gem::Specification.new do |s|
25
25
  "README.rdoc",
26
26
  "Rakefile",
27
27
  "VERSION",
28
+ "examples/simple_es_listen.rb",
29
+ "examples/simple_send.rb",
28
30
  "lib/neighborparrot.rb",
29
31
  "lib/neighborparrot/auth.rb",
30
32
  "lib/neighborparrot/callbacks.rb",
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.4
4
+ version: 0.3.5
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-02-01 00:00:00.000000000 Z
12
+ date: 2012-02-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: eventmachine
16
- requirement: &80693500 !ruby/object:Gem::Requirement
16
+ requirement: &21715480 !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: *80693500
24
+ version_requirements: *21715480
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: em-http-request
27
- requirement: &80689840 !ruby/object:Gem::Requirement
27
+ requirement: &21714560 !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: *80689840
35
+ version_requirements: *21714560
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: em-eventsource
38
- requirement: &80712050 !ruby/object:Gem::Requirement
38
+ requirement: &20876540 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *80712050
46
+ version_requirements: *20876540
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bson_ext
49
- requirement: &80708470 !ruby/object:Gem::Requirement
49
+ requirement: &20872080 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *80708470
57
+ version_requirements: *20872080
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: ruby-hmac
60
- requirement: &80810390 !ruby/object:Gem::Requirement
60
+ requirement: &20870080 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *80810390
68
+ version_requirements: *20870080
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: signature
71
- requirement: &80807390 !ruby/object:Gem::Requirement
71
+ requirement: &21422800 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *80807390
79
+ version_requirements: *21422800
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rspec
82
- requirement: &80941980 !ruby/object:Gem::Requirement
82
+ requirement: &21421720 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *80941980
90
+ version_requirements: *21421720
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: bundler
93
- requirement: &80940920 !ruby/object:Gem::Requirement
93
+ requirement: &21420440 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *80940920
101
+ version_requirements: *21420440
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: jeweler
104
- requirement: &80940000 !ruby/object:Gem::Requirement
104
+ requirement: &21417820 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: 1.6.4
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *80940000
112
+ version_requirements: *21417820
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: simplecov
115
- requirement: &80938470 !ruby/object:Gem::Requirement
115
+ requirement: &20821840 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,7 +120,7 @@ dependencies:
120
120
  version: '0'
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *80938470
123
+ version_requirements: *20821840
124
124
  description: Send messages to the neighborparrot event source service
125
125
  email: eloy@indeos.es
126
126
  executables: []
@@ -137,6 +137,8 @@ files:
137
137
  - README.rdoc
138
138
  - Rakefile
139
139
  - VERSION
140
+ - examples/simple_es_listen.rb
141
+ - examples/simple_send.rb
140
142
  - lib/neighborparrot.rb
141
143
  - lib/neighborparrot/auth.rb
142
144
  - lib/neighborparrot/callbacks.rb
@@ -166,7 +168,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
166
168
  version: '0'
167
169
  segments:
168
170
  - 0
169
- hash: -150390895
171
+ hash: -3903328379806659970
170
172
  required_rubygems_version: !ruby/object:Gem::Requirement
171
173
  none: false
172
174
  requirements: