Quiero proxy de archivos remotos a través de una aplicación Sinatra. Esto requiere transmitir una respuesta HTTP con encabezados desde una fuente remota al cliente, pero no puedo encontrar la manera de configurar los encabezados de la respuesta mientras uso la API de transmisión dentro del bloque proporcionado por Net::HTTP#get_response
.Respuesta de transmisión de Sinatra con encabezados
Por ejemplo, este no establece las cabeceras de respuesta:
get '/file' do
stream do |out|
uri = URI("http://manuals.info.apple.com/en/ipad_user_guide.pdf")
Net::HTTP.get_response(uri) do |file|
headers 'Content-Type' => file.header['Content-Type']
file.read_body { |chunk| out << chunk }
end
end
end
Y esto da como resultado el error: Net::HTTPOK#read_body called twice (IOError)
:
get '/file' do
response = nil
uri = URI("http://manuals.info.apple.com/en/ipad_user_guide.pdf")
Net::HTTP.get_response(uri) do |file|
headers 'Content-Type' => file.header['Content-Type']
response = stream do |out|
file.read_body { |chunk| out << chunk }
end
end
response
end