I'm trying to create a new route in dancer that will serve as a proxy of sorts to another service. This other service returns various kinds of files of varying size.
For small files, the following snippet works fine:
my $ua = LWP::UserAgent->new(timeout => 180,);
$ua->env_proxy;
my $rsp = $ua->head($new_route);
send_error('Bad Gateway (head)', 502) unless (ref $rsp && $rsp->is_s
+uccess);
foreach my $key ('Content-Encoding', 'Content-Length', 'Content-Type
+', 'Last-Modified') {
my $value = $rsp->header($key) || '';
header($key => $value) if ($value);
}
$rsp = $ua->get($new_route);
send_error('Bad Gateway (get)', 502) unless (ref $rsp && $rsp->is_su
+ccess);
return $rsp->content;
The problem that I'm having is that, for large files, I would like to be able to stream the response. Now LWP::UserAgent allows for grabbing the response in chunks using a callback and Dancer allows sending data in chunks using send_file with a callback but I (as yet) have no clue how to tie the two together in any workable fashion.
Any ideas how to make this work?
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|