home *** CD-ROM | disk | FTP | other *** search
- #
- # $Id: data.pm,v 1.2 1998/11/19 21:45:01 aas Exp $
- #
- # Implements access to data:-URLs as specified in RFC 2397
-
-
- package LWP::Protocol::data;
- use strict;
- use vars qw(@ISA);
-
- require HTTP::Response;
- require HTTP::Status;
-
- require LWP::Protocol;
- @ISA = qw(LWP::Protocol);
-
- use HTTP::Date qw(time2str);
- require LWP; # needs version number
-
- sub request
- {
- my($self, $request, $proxy, $arg, $size) = @_;
-
- # check proxy
- if (defined $proxy)
- {
- return new HTTP::Response &HTTP::Status::RC_BAD_REQUEST,
- 'You can not proxy with data';
- }
-
- # check method
- my $method = $request->method;
- unless ($method eq 'GET' || $method eq 'HEAD') {
- return new HTTP::Response &HTTP::Status::RC_BAD_REQUEST,
- 'Library does not allow method ' .
- "$method for 'data:' URLs";
- }
-
- my $url = $request->url;
- my $response = new HTTP::Response &HTTP::Status::RC_OK, "Document follows";
-
- my $media_type = $url->media_type;
-
- my $data = $url->data;
- $response->header('Content-Type' => $media_type,
- 'Content-Length' => length($data),
- 'Date' => time2str(time),
- 'Server' => "libwww-perl-internal/$LWP::VERSION"
- );
- $response->content($data) if $method ne "HEAD";
-
- return $response;
- }
-
- 1;
-