Test-ModuleVersion
view release on metacpan or search on metacpan
lib/Test/ModuleVersion.pm view on Meta::CPAN
389390391392393394395396397398399400401402403404405406407408409if
(
defined
$args
->{content}) {
$request
->{headers}{
'content-type'
} ||=
"application/octet-stream"
;
if
(
ref
$args
->{content} eq
'CODE'
) {
$request
->{headers}{
'transfer-encoding'
} =
'chunked'
unless
$request
->{headers}{
'content-length'
}
||
$request
->{headers}{
'transfer-encoding'
};
$request
->{cb} =
$args
->{content};
}
else
{
my
$content
=
$args
->{content};
if
( $] ge
'5.008'
) {
utf8::downgrade(
$content
, 1)
or
die
(
qq/Wide character in request message body\n/
);
}
$request
->{headers}{
'content-length'
} =
length
$content
unless
$request
->{headers}{
'content-length'
}
||
$request
->{headers}{
'transfer-encoding'
};
$request
->{cb} =
sub
{
substr
$content
, 0,
length
$content
,
''
};
}
$request
->{trailer_cb} =
$args
->{trailer_callback}
if
ref
$args
->{trailer_callback} eq
'CODE'
;
lib/Test/ModuleVersion.pm view on Meta::CPAN
501502503504505506507508509510511512513514515516517518519520521# URI escaping adapted from URI::Escape
# perl 5.6 ready UTF-8 encoding adapted from Test::ModuleVersion::JSON::PP
my
%escapes
=
map
{
chr
(
$_
) =>
sprintf
(
"%%%02X"
,
$_
) } 0..255;
$escapes
{
' '
}=
"+"
;
my
$unsafe_char
=
qr/[^A-Za-z0-9\-\._~]/
;
sub
_uri_escape {
my
(
$self
,
$str
) =
@_
;
if
( $] ge
'5.008'
) {
utf8::encode(
$str
);
}
else
{
$str
=
pack
(
"U*"
,
unpack
(
"C*"
,
$str
))
# UTF-8 encode a byte string
$str
=
pack
(
"C*"
,
unpack
(
"C*"
,
$str
));
# clear UTF-8 flag
}
$str
=~ s/(
$unsafe_char
)/
$escapes
{$1}/ge;
return
$str
;
}
lib/Test/ModuleVersion.pm view on Meta::CPAN
601602603604605606607608609610611612613614615616617618619620621
@_
== 1 ||
die
(
q/Usage: $handle->close()/
.
"\n"
);
my
(
$self
) =
@_
;
CORE::
close
(
$self
->{fh})
or
die
(
qq/Could not close socket: '$!'\n/
);
}
sub
write
{
@_
== 2 ||
die
(
q/Usage: $handle->write(buf)/
.
"\n"
);
my
(
$self
,
$buf
) =
@_
;
if
( $] ge
'5.008'
) {
utf8::downgrade(
$buf
, 1)
or
die
(
qq/Wide character in write()\n/
);
}
my
$len
=
length
$buf
;
my
$off
= 0;
local
$SIG
{PIPE} =
'IGNORE'
;
while
() {
lib/Test/ModuleVersion.pm view on Meta::CPAN
826827828829830831832833834835836837838839840841842843844845@_
== 2 ||
die
(
q/Usage: $handle->write_content_body(request)/
.
"\n"
);
my
(
$self
,
$request
) =
@_
;
my
(
$len
,
$content_length
) = (0,
$request
->{headers}{
'content-length'
});
while
() {
my
$data
=
$request
->{cb}->();
defined
$data
&&
length
$data
or
last
;
if
( $] ge
'5.008'
) {
utf8::downgrade(
$data
, 1)
or
die
(
qq/Wide character in write_content()\n/
);
}
$len
+=
$self
->
write
(
$data
);
}
$len
==
$content_length
or
die
(
qq/Content-Length missmatch (got: $len expected: $content_length)\n/
);
lib/Test/ModuleVersion.pm view on Meta::CPAN
873874875876877878879880881882883884885886887888889890891892893@_
== 2 ||
die
(
q/Usage: $handle->write_chunked_body(request)/
.
"\n"
);
my
(
$self
,
$request
) =
@_
;
my
$len
= 0;
while
() {
my
$data
=
$request
->{cb}->();
defined
$data
&&
length
$data
or
last
;
if
( $] ge
'5.008'
) {
utf8::downgrade(
$data
, 1)
or
die
(
qq/Wide character in write_chunked_body()\n/
);
}
$len
+=
length
$data
;
my
$chunk
=
sprintf
'%X'
,
length
$data
;
$chunk
.=
"\x0D\x0A"
;
$chunk
.=
$data
;
$chunk
.=
"\x0D\x0A"
;
( run in 0.481 second using v1.01-cache-2.11-cpan-a9ef4e587e4 )