meshruby 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 474c5aa4270798e0d8b8c89c3790e7c245da65f5
4
- data.tar.gz: 6b1539cdda657edea0acccb6483ddf987a3bfbd8
3
+ metadata.gz: aa3cc6739fcfddceafad7ab4cb186f91f099e102
4
+ data.tar.gz: 236cfea3eb0b7b516a4e3f199b9fa0e5709d2307
5
5
  SHA512:
6
- metadata.gz: 0dc4338d915e2150860628a8836e52339deb402fc6305f5e9750701a1aac641e2f9043ffefec75e692388f0027420cf5b9fa53a5d21d10c1e6cc97315505a14e
7
- data.tar.gz: 6b396a8d02a4e29ec6d4d9eda346611da827c1bfdc1c88549d667b69e2101a41ed70944812b63a083b0e035dc0b1537234c0bab15f261b8aa7473b24d1e9e5a2
6
+ metadata.gz: 19f7eca899cab0afb1b628bbee1a0f550efb4a3aaf60ce2dc0a89510c2e408707706d9a20ed17074dd279895df5ba9baf931a5df5f6f02065aebd90de9eedb7c
7
+ data.tar.gz: 2178fa732361491a61c32ffb6eafcd07fb56865bf4d0a94584c611e3934589ef21ca13dc0377d27620a4f0c4ab4b1b48bf6491562e76b8ceeaf089deb9f6599d
data/console.rb ADDED
@@ -0,0 +1,43 @@
1
+ require_relative 'lib/meshruby'
2
+ require 'pry'
3
+
4
+ uid = "f6cffb60-da03-11e4-b0bb-ed16156c6fa4"
5
+ token = "7655d4abf306ca5cccbc79ee36f0fac02a230873"
6
+
7
+ mesh = EM::MeshRuby.new(uid, token)
8
+
9
+ mesh.toggle_debug!
10
+
11
+ # http get https://meshblu.octoblu.com/data/f6cffb60-da03-11e4-b0bb-ed16156c6fa4 meshblu_auth_uuid:f6cffb60-da03-11e4-b0bb-ed16156c6fa4 meshblu_auth_token:7655d4abf306ca5cccbc79ee36f0fac02a230873
12
+ class KeyboardHandler < EM::Connection
13
+ include EM::Protocols::LineText2
14
+
15
+ attr_reader :mesh
16
+
17
+ def initialize(mesh)
18
+ @mesh = mesh
19
+ end
20
+
21
+ def receive_line(data)
22
+ puts (mesh.instance_eval(data) || "OK")
23
+ print "> "
24
+ rescue Exception => exc
25
+ exit(0) if data.start_with?('q')
26
+ puts "#{exc.message}"
27
+ print "> "
28
+ end
29
+ end
30
+
31
+ EM.run do
32
+ mesh.connect
33
+ mesh.onmessage do |msg|
34
+ begin
35
+ mesh.emit(msg["fromUuid"], {wow: "Thanks! :)"})
36
+ rescue => e
37
+ binding.pry
38
+ end
39
+ end
40
+ puts "Ready."
41
+ print "> "
42
+ EM.open_keyboard(KeyboardHandler, mesh)
43
+ end
data/lib/meshruby.rb CHANGED
@@ -41,10 +41,23 @@ module EventMachine
41
41
  @queue.pop(&@onmessage) if @onmessage
42
42
  end
43
43
 
44
+ # TODO: Rename to 'message', since this is not the only thing we're emitting
44
45
  def emit(devices, message_hash)
45
46
  socket.emit("message", devices: devices, message: message_hash)
46
47
  end
47
48
 
49
+ def credentials
50
+ @credentials ||= {uuid: @uuid, token: @token}
51
+ end
52
+
53
+ def data(telemetry)
54
+ case telemetry
55
+ when Hash then nil # do stuff
56
+ else telemetry = {data: telemetry}
57
+ end
58
+ socket.emit("data", telemetry.merge!(credentials))
59
+ end
60
+
48
61
  def onmessage(&blk)
49
62
  @onmessage = blk
50
63
  end
data/spec/helpers.rb CHANGED
@@ -8,6 +8,7 @@ module Helpers
8
8
  pushed = msg
9
9
  EM.stop
10
10
  end
11
+ EventMachine.add_timer(0.5) { raise 'Event loop timeout' }
11
12
  end
12
13
  pushed
13
14
  end
@@ -15,11 +15,15 @@ describe EM::MeshRuby do
15
15
  end
16
16
 
17
17
  it "Pushes all kinds of messages" do
18
+ mesh.queue = []
18
19
  # Good JSON
19
- expect(push_onto(mesh, '{"abc": 123}')).to eq({"abc" => 123})
20
+ mesh.push '{"abc": 123}'
21
+ expect(mesh.queue.pop).to eq({"abc" => 123})
20
22
  # Bad JSON
21
- expect(push_onto(mesh, '{{{')).to eq('{{{')
23
+ mesh.push('{{{')
24
+ expect(mesh.queue.pop).to eq('{{{')
22
25
  # Unidentified Flying Objects
23
- expect(push_onto(mesh, Thread)).to eq(Thread)
26
+ mesh.push(Thread)
27
+ expect(mesh.queue.pop).to eq(Thread)
24
28
  end
25
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meshruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rick Carlino
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-06 00:00:00.000000000 Z
11
+ date: 2015-06-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -119,6 +119,7 @@ files:
119
119
  - ".rspec"
120
120
  - README.md
121
121
  - Rakefile
122
+ - console.rb
122
123
  - lib/meshruby.rb
123
124
  - license.txt
124
125
  - spec/helpers.rb
@@ -152,3 +153,4 @@ test_files:
152
153
  - spec/helpers.rb
153
154
  - spec/lib/meshruby_spec.rb
154
155
  - spec/spec_helper.rb
156
+ has_rdoc: