PHP 7.4.33
Preview: data.pm Size: 3.34 KB
/home/godevadmin/public_html/upload_images/home/000~ROOT~000/usr/share/perl5/URI/data.pm

package URI::data;  # RFC 2397

use strict;
use warnings;

use parent 'URI';

our $VERSION = '1.73';
$VERSION = eval $VERSION;

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

Directory Contents

Dirs: 2 × Files: 43

Name Size Perms Modified Actions
file DIR
- drwxr-xr-x 2024-08-07 14:24:37
Edit Download
urn DIR
- drwxr-xr-x 2024-08-07 14:24:37
Edit Download
3.34 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
6.90 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
9.53 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
1.06 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
2.40 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
6.37 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
451 B lrw-r--r-- 2018-01-09 06:42:55
Edit Download
170 B lrw-r--r-- 2018-01-09 06:42:55
Edit Download
820 B lrw-r--r-- 2018-01-09 06:42:55
Edit Download
2.88 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
467 B lrw-r--r-- 2018-01-09 06:42:55
Edit Download
170 B lrw-r--r-- 2018-01-09 06:42:55
Edit Download
1.27 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
151 B lrw-r--r-- 2018-01-09 06:42:55
Edit Download
1.45 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
153 B lrw-r--r-- 2018-01-09 06:42:55
Edit Download
1.20 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
4.77 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
155 B lrw-r--r-- 2018-01-09 06:42:55
Edit Download
233 B lrw-r--r-- 2018-01-09 06:42:55
Edit Download
151 B lrw-r--r-- 2018-01-09 06:42:55
Edit Download
152 B lrw-r--r-- 2018-01-09 06:42:55
Edit Download
124 B lrw-r--r-- 2018-01-09 06:42:55
Edit Download
1.69 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
169 B lrw-r--r-- 2018-01-09 06:42:55
Edit Download
198 B lrw-r--r-- 2018-01-09 06:42:55
Edit Download
2.32 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
201 B lrw-r--r-- 2018-01-09 06:42:55
Edit Download
154 B lrw-r--r-- 2018-01-09 06:42:55
Edit Download
154 B lrw-r--r-- 2018-01-09 06:42:55
Edit Download
5.36 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
2.15 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
3.77 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
133 B lrw-r--r-- 2018-01-09 06:42:55
Edit Download
5.71 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
2.06 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
3.20 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
257 B lrw-r--r-- 2018-01-09 06:42:55
Edit Download
5.52 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
2.50 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
442 B lrw-r--r-- 2018-01-09 06:42:55
Edit Download
3.66 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download
1.04 KB lrw-r--r-- 2018-01-09 06:42:55
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).