forked from turboladen/playful
-
Notifications
You must be signed in to change notification settings - Fork 0
/
control_point.thor
41 lines (33 loc) · 1.27 KB
/
control_point.thor
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
require File.expand_path(File.dirname(__FILE__)+ '/../lib/upnp/control_point')
require 'rack'
UPnP::ControlPoint.raise_on_remote_error = false
module Upnp
class ControlPoint < Thor
desc "test TARGET", "Make a control point"
def test(target="upnp:rootdevice")
cp = UPnP::ControlPoint.new(target)
cp.start do |new_device_channel, old_device_channel|
EM.defer do
EM::WebSocket.start(host: '0.0.0.0', port: 8080, debug: true) do |ws|
ws.onopen do
new_device_channel.subscribe do |device|
puts "New device in channel: #{device.friendly_name}"
ws.send "[#{Time.now}] #{device.friendly_name}: #{device.device_type}"
device.service_list.each do |service|
ws.send "-- #{service.service_type}"
service.action_list.each do |action|
ws.send "---- #{action[:name]}"
ws.send "---- #{action[:argumentList]}"
end
end
end
end
end
Rack::Handler::Thin.run(Rack::Builder.new {
run Rack::File.new(File.expand_path(File.dirname(__FILE__) + "/control_point.html"))
}, Port: 3000)
end
end
end
end
end