class DACPClient::Browser

The Client class handles communication with the server

Constants

DAAP_SERVICE
TOUCHABLE_SERVICE

Attributes

services[R]

Public Class Methods

new() click to toggle source
# File lib/dacpclient/browser.rb, line 22
def initialize
  @services = []
end

Public Instance Methods

browse() click to toggle source
# File lib/dacpclient/browser.rb, line 26
def browse
  @services = []
  timeout(5) do
    DNSSD.browse!(TOUCHABLE_SERVICE) do |node|
      resolve(node)
      break unless node.flags.more_coming?
    end
  end
  services
rescue Timeout::Error # => e
  []
end

Private Instance Methods

get_device_host(resolved) click to toggle source
# File lib/dacpclient/browser.rb, line 48
def get_device_host(resolved)
  target = resolved.target
  info = Socket.getaddrinfo(target, nil, Socket::AF_INET)
  info[0][2]
rescue SocketError
  target
end
node_resolver(_node, resolved) click to toggle source
# File lib/dacpclient/browser.rb, line 41
def node_resolver(_node, resolved)
  services << Service.new(resolved.name, get_device_host(resolved),
                          resolved.port, resolved.text_record)

  resolved.flags.more_coming?
end
resolve(node) click to toggle source
# File lib/dacpclient/browser.rb, line 56
def resolve(node)
  resolver = DNSSD::Service.new
  resolver.resolve(node) do |resolved|
    break unless node_resolver(node, resolved)
  end
end