easy_upnp 0.2.1 → 0.2.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 +4 -4
- data/bin/upnp-list +57 -0
- data/easy_upnp.gemspec +3 -2
- data/lib/easy_upnp/upnp_device.rb +12 -0
- data/lib/easy_upnp/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ba225151d956a041aaadd246678194bb56d0dbf3
|
4
|
+
data.tar.gz: c75a1966c29b922dd79ec0e64f971f1504f77390
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 18148d3f3aacad599e4c618cfafdb3381c27a2fd1e079042f29c0975c0e04de0c408d634beee1b94b93f8db326d8256dfa72fbf854f5ae4fd6ce2462cfaa7dfc
|
7
|
+
data.tar.gz: fb9a6f08c5350ed95170705aa662cd638de2fe94b0698b7bea2f07c259ad1b337a33a1cca30cf72cddae434333c029ac3925c94e56cc2e3b9dcfce7dd3997b4a
|
data/bin/upnp-list
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'optparse'
|
4
|
+
require 'easy_upnp/ssdp_searcher'
|
5
|
+
|
6
|
+
DEFAULT_ST = 'ssdp:all'
|
7
|
+
|
8
|
+
search_option_keys = [:timeout, :repeat_queries]
|
9
|
+
options = {search_target: DEFAULT_ST}
|
10
|
+
|
11
|
+
OptionParser.new do |opts|
|
12
|
+
opts.banner = "Usage: upnp-list [options]"
|
13
|
+
|
14
|
+
opts.on("-t", "--timeout [SECONDS]") do |v|
|
15
|
+
options[:timeout] = v.to_i
|
16
|
+
end
|
17
|
+
|
18
|
+
opts.on("-r", "--repeat-queries [N]") do |v|
|
19
|
+
options[:repeat_queries] = v.to_i
|
20
|
+
end
|
21
|
+
|
22
|
+
opts.on("-s", "--search-target [STRING]", String,
|
23
|
+
"Specify UPnP search target (default \"ssdp:all\")") do |v|
|
24
|
+
options[:search_target] = v
|
25
|
+
end
|
26
|
+
end.parse!
|
27
|
+
|
28
|
+
puts "Starting SSDP search..."
|
29
|
+
|
30
|
+
search_options = options.select { |k, v| search_option_keys.include?(k) }
|
31
|
+
devices = EasyUpnp::SsdpSearcher.new(search_options).search(options[:search_target])
|
32
|
+
|
33
|
+
if devices.any?
|
34
|
+
puts "Found #{devices.count} devices:"
|
35
|
+
printf "%30s %45s %s\n", "Name", "UUID", "Services"
|
36
|
+
|
37
|
+
devices.each do |device|
|
38
|
+
printf "%30s %45s ", device.device_name, device.uuid
|
39
|
+
|
40
|
+
services = device.all_services
|
41
|
+
if services.any?
|
42
|
+
printf "%s\n", services.first
|
43
|
+
|
44
|
+
services[1..-1].each do |s|
|
45
|
+
printf "%30s %45s %s\n", "", "", s
|
46
|
+
end
|
47
|
+
else
|
48
|
+
puts "( None )"
|
49
|
+
end
|
50
|
+
|
51
|
+
puts
|
52
|
+
end
|
53
|
+
elsif options[:search_target] == DEFAULT_ST
|
54
|
+
puts "Couldn't find any UPnP devices."
|
55
|
+
else
|
56
|
+
puts "Couldn't find any UPnP devices with search target: \"#{options[:search_target]}\""
|
57
|
+
end
|
data/easy_upnp.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |gem|
|
|
12
12
|
gem.email = 'chris@sidoh.org'
|
13
13
|
gem.homepage = 'http://github.com/sidoh/easy_upnp'
|
14
14
|
|
15
|
-
gem.add_dependency 'rake'
|
15
|
+
gem.add_dependency 'rake'
|
16
16
|
gem.add_dependency 'savon', '~> 2.11.1'
|
17
17
|
gem.add_dependency 'nori', '~> 2.6.0'
|
18
18
|
gem.add_dependency 'nokogiri', '~> 1.6.6.2'
|
@@ -27,6 +27,7 @@ Gem::Specification.new do |gem|
|
|
27
27
|
}
|
28
28
|
|
29
29
|
gem.files = (all_files_without_ignores + dotfiles).sort
|
30
|
+
gem.executables = ["upnp-list"]
|
30
31
|
|
31
|
-
gem.require_path = "lib"
|
32
|
+
gem.require_path = "lib"
|
32
33
|
end
|
@@ -33,6 +33,18 @@ module EasyUpnp
|
|
33
33
|
UpnpDevice.new(uuid, service_definitions)
|
34
34
|
end
|
35
35
|
|
36
|
+
def device_name
|
37
|
+
if all_services.empty?
|
38
|
+
raise RuntimeError, "Couldn't resolve device name because no endpoints are defined"
|
39
|
+
end
|
40
|
+
|
41
|
+
document = open(service_definition(all_services.first)[:location]) { |f| f.read }
|
42
|
+
xml = Nokogiri::XML(document)
|
43
|
+
xml.remove_namespaces!
|
44
|
+
|
45
|
+
xml.xpath("//device/friendlyName").text
|
46
|
+
end
|
47
|
+
|
36
48
|
def all_services
|
37
49
|
@service_definitions.map { |x| x[:st] }
|
38
50
|
end
|
data/lib/easy_upnp/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: easy_upnp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christopher Mullins
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -82,7 +82,8 @@ dependencies:
|
|
82
82
|
version: 2.0.0
|
83
83
|
description:
|
84
84
|
email: chris@sidoh.org
|
85
|
-
executables:
|
85
|
+
executables:
|
86
|
+
- upnp-list
|
86
87
|
extensions: []
|
87
88
|
extra_rdoc_files: []
|
88
89
|
files:
|
@@ -91,6 +92,7 @@ files:
|
|
91
92
|
- LICENSE
|
92
93
|
- README.md
|
93
94
|
- Rakefile
|
95
|
+
- bin/upnp-list
|
94
96
|
- easy_upnp.gemspec
|
95
97
|
- lib/easy_upnp/device_control_point.rb
|
96
98
|
- lib/easy_upnp/ssdp_searcher.rb
|