Method: Net::DAAP::Client#do_get

Defined in:
lib/net/daap.rb

#do_get(request, &block) ⇒ Object



123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# File 'lib/net/daap.rb', line 123

def do_get(request, &block)
  log.debug("do_get called") if log
  url = String.new('/' + request)
  if @session_id
    url += url =~ /\?/ ?  "&" : "?"
    url += "session-id=#{@session_id}"
  end

  #if @revision && request != "logout"
  #  url += "&revision-number=#{@revision}"
  #end
  log.debug("Fetching url: #{url}") if log

  req = Net::HTTP::Get.new(url, request_headers(url))
  req.basic_auth('iTunes_4.6', @password) if ! @password.nil?
  res = @http_client.request(req) do |response|
    response.read_body(&block)
  end

  case res
  when Net::HTTPSuccess
  else
    log.error("This DAAP Server requires a password") if log
    res.error!
  end

  log.debug("Done Fetching url: #{url}") if log

  content_type = res.header['content-type']
  if request !~ /(?:\/items\/\d+\.|logout)/ && content_type !~ /dmap/
    raise "Broken response"
  end

  res.body
end