def do_request(path = '/', opts={})
opts[:method] ||= :get
opts[:content] ||= ''
opts[:plain] ||= false
opts[:headers] ||= {}
if @token
response = @token.request(opts[:method], (@uri + path).to_s, opts[:content].to_s)
if response.is_a?(Net::HTTPSuccess)
result = response.body
elsif response.is_a?(Net::HTTPNotFound)
raise RestClient::ResourceNotFound
elsif response.is_a?(Net::HTTPInternalServerError)
raise RestClient::InternalServerError
else
response.error!
end
else
result = RestClient::Request.execute(:method => opts[:method], :url => @uri + path, :payload => opts[:content], :headers => opts[:headers])
end
return opts[:plain] ? result : Nokogiri::XML(result)
end