Estoy creando algún tipo de proxy.
Cuando llamo a alguna url en una aplicación de rack, reenvío esa solicitud a otra url.Solicitud de publicación con body_stream y los parámetros
La solicitud que reenvío es una POST con un archivo y algunos parámetros.
Quiero agregar más parámetros.
Pero el archivo puede ser bastante grande. Entonces lo envío con Net::HTTP#body_stream
en vez de Net::HTTP#body
.
Recibo mi pedido como un objeto Rack::Request
y creo mi objeto Net :: HTTP con eso.
req = Net::HTTP::Post.new(request.path_info)
req.body_stream = request.body
req.content_type = request.content_type
req.content_length = request.content_length
http = Net::HTTP.new(@host, @port)
res = http.request(req)
He intentado de varias formas agregar los parámetros del proxy. Pero parece que nada en Net :: HTTP permite agregar parámetros a una solicitud body_stream, solo a uno cuerpo.
¿Hay una forma más simple de proxy de una solicitud de rack así? ¿O una forma limpia de agregar mis parámetros a mi solicitud?
¿por qué 'req.set_form_data (: some => 'data')' no funciona? – mikezter
Porque define '# body' y restablece' # body_stream', así que pierdo todos los datos definidos previamente. –