module HAP::Request

Public Instance Methods

get(url) click to toggle source
# File lib/hap_client/request.rb, line 42
def get(url)
  request("GET", url)
end
init_request() click to toggle source
# File lib/hap_client/request.rb, line 7
def init_request()
  @req_queue = EM::Queue.new
  @res_queue = EM::Queue.new

  response_work = nil

  request_work = Proc.new do |req|
    if encryption_ready?
      encrypt(req).each do |r|
        if @socket.nil?
          send_data(r)
        else
          @socket.write(r)
        end
      end
    else
      if @socket.nil?
        send_data(req)
      else
        @socket.write(req)
      end
    end

    init_parser()

    @res_queue.pop(&response_work)
  end

  response_work = Proc.new do |res|
    @req_queue.pop(&request_work)
  end

  @req_queue.pop(&request_work)
end
post(url, type, data) click to toggle source
# File lib/hap_client/request.rb, line 46
def post(url, type, data)
  request("POST", url, type, data)
end
put(url, type, data) click to toggle source
# File lib/hap_client/request.rb, line 50
def put(url, type, data)
  request("PUT", url, type, data)
end

Private Instance Methods

request(method, url, type=nil, data=nil) click to toggle source
# File lib/hap_client/request.rb, line 56
def request(method, url, type=nil, data=nil)
  req = method + " " + url + " HTTP/1.1\r\n"
  req << "Host: homekit\r\n"

  if type
    req << "Content-Type: " + type + "\r\n"
  end
  if data
    req << "Content-Length: " + data.length.to_s + "\r\n"
  end
  req << "\r\n"

  if log_debug?
    if data
      if data[0] == '{'
        debug(req + data.to_s)
      else
        debug(req + RubyHome::HAP::TLV.read(data).to_s)
      end
    else
      debug(req)
    end
  end

  if data
    req << data.to_s
  end

  @req_queue.push(req)
end