POE::Filter::HTTPD - convert stream to HTTP::Request; HTTP::Response to stream
$httpd = POE::Filter::HTTPD->new(); $arrayref_with_http_response_as_string = $httpd->put($full_http_response_object); $arrayref_with_http_request_object = $line->get($arrayref_of_raw_data_chunks_from_driver);
The HTTPD filter parses the first HTTP 1.0 request from an incoming stream into an HTTP::Request object (if the request is good) or an HTTP::Response object (if the request was malformed). To send a response, give its put() method a HTTP::Response object.
Here is a sample input handler:
sub got_request { my ($heap, $request) = @_[HEAP, ARG0]; # The Filter::HTTPD generated a response instead of a request. # There must have been some kind of error. You could also check # (ref($request) eq 'HTTP::Response'). if ($request->isa('HTTP::Response')) { $heap->{wheel}->put($request); return; } # Process the request here. my $response = HTTP::Response->new(200); $response->push_header( 'Content-Type', 'text/html' ); $response->content( $request->as_string() ); $heap->{wheel}->put($response); }
Please see the documentation for HTTP::Request and HTTP::Response.
Please see POE::Filter.
It is perfectly possible to use Filter::HTTPD for streaming output media. Even if it's not possible to change the input filter from Filter::HTTPD, by setting the output_filter to Filter::Stream and omitting any content in the HTTP::Response object.
$wheel->put($response); # Without content, it sends just headers. $wheel->set_output_filter(POE::Filter::Stream->new()); $wheel->put("Raw content.");
POE::Filter.
The SEE ALSO section in POE contains a table of contents covering the entire POE distribution.
Keep-alive is not supported.
The HTTPD filter was contributed by Artur Bergman.
Please see POE for more information about authors and contributors.
To install POE, copy and paste the appropriate command in to your terminal.
cpanm
cpanm POE
CPAN shell
perl -MCPAN -e shell install POE
For more information on module installation, please visit the detailed CPAN module installation guide.