class VlcProxy::Connection

When HTTP enabled on VLC, a LUA web server runs in background listening

on the specific port on localhost by default. VLC requires setting a
password for basic auth as well

Public Class Methods

new(hostname, password, port = 8080, scheme = 'http') click to toggle source
# File lib/vlc_proxy/connection.rb, line 9
def initialize(hostname, password, port = 8080, scheme = 'http')
  @hostname = hostname
  @password = password
  @port = port
  @scheme = scheme
  @logger = VlcProxy.config.logger
end

Public Instance Methods

connected?() click to toggle source

Test if the connection works with the connection parameters

Returns true if VLC is running and returns a response on /status
Returns false if there are any connection errors
# File lib/vlc_proxy/connection.rb, line 20
def connected?
  response = execute('status')
  valid_response?(response)
rescue VlcProxy::AccessDeniedError, Errno::ECONNREFUSED => e
  @logger.error(e.message)
  false
end
execute(action, command = '', parameters = {}) click to toggle source
# File lib/vlc_proxy/connection.rb, line 28
def execute(action, command = '', parameters = {})
  uri = build_uri(action, command, parameters)
  request = Net::HTTP::Get.new(uri)
  request.basic_auth('', @password)

  Net::HTTP.start(uri.hostname, uri.port) do |http|
    @logger.debug('Starting HTTP request')
    http.request(request)
  end
end

Private Instance Methods

build_uri(action, command = '', parameters = {}) click to toggle source
# File lib/vlc_proxy/connection.rb, line 57
def build_uri(action, command = '', parameters = {})
  base_url = "#{@scheme}://#{@hostname}:#{@port}/requests/#{action}.xml"
  base_url += "?command=#{command}" unless command.empty?

  unless parameters.empty?
    params = parameters.map { |key, value| "#{key}=#{value}" }.join('&')
    base_url += "&#{params}"
  end

  @logger.debug("built uri: #{base_url}")
  URI(base_url)
end
http_success?(response) click to toggle source
# File lib/vlc_proxy/connection.rb, line 41
def http_success?(response)
  response.code == '200'
end
http_unauthorized?(response) click to toggle source
# File lib/vlc_proxy/connection.rb, line 45
def http_unauthorized?(response)
  response.code == '401'
end
valid_response?(response) click to toggle source
# File lib/vlc_proxy/connection.rb, line 49
def valid_response?(response)
  return true if http_success?(response)

  raise VlcProxy::AccessDeniedError if http_unauthorized?(response)

  false
end