Sinatraアプリケーションを使用してリモートファイルをプロキシする必要があります。これには、リモートソースからのヘッダーをHTTPレスポンスでクライアントにストリーミングする必要がありますが、Net::HTTP#get_response
で提供されるブロック内でストリーミングAPIを使用しているときに、応答のヘッダーを設定する方法がわかりません。Sinatraのヘッダー付きストリーミング応答
たとえば、これはレスポンスヘッダを設定しません。
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
そして、これはエラーになり:私は間違っている可能性
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