view release on metacpan or search on metacpan
author/perl-stripper/perl-stripper/cpanfile.snapshot view on Meta::CPAN
strict 0
common-sense-3.75
pathname: M/ML/MLEHMANN/common-sense-3.75.tar.gz
provides:
common::sense 3.75
requirements:
ExtUtils::MakeMaker 0
local-lib-2.000029
pathname: H/HA/HAARG/local-lib-2.000029.tar.gz
provides:
lib::core::only undef
local::lib 2.000029
requirements:
perl 5.006
author/pod-stripper/scripts/pod_stripper.pl view on Meta::CPAN
sub delete_pod {
my $file = shift;
unlink $file;
}
sub dostrip {
my $file = shift;
my $strip = Pod::Strip->new;
my $module;
{ local $/ = undef;
open my $pm, '<', $file;
$module = <$pm>;
close $pm
}
# it is not pod, but might be some data.
# skip it for safety.
if ($module =~ /^__DATA__$/m) {
return
}
examples/cgi/WwwCounter/gifcat.pl view on Meta::CPAN
} elsif ($x1 == 0x3b) {
&Trailer();
last;
} elsif ($cnt == $size) {
last;
} else {
return("ERROR");
}
}
undef($buf);
$Gif++;
}
if ($pflag == 1) {
return;
}
$GifImage = "GIF89a";
$GifImage .= pack("C", $logicalScreenWidth & 0x00ff);
$GifImage .= pack("C", ($logicalScreenWidth & 0xff00) >> 8);
$GifImage .= pack("C", $logicalScreenHeight & 0x00ff);
lib/AWS/Lambda/Bootstrap.pm view on Meta::CPAN
my $handler = $self->{handler};
my $name = $self->{function_name};
return try {
package main;
require "${task_root}/${handler}.pl";
my $f = main->can($name) // die "handler $name is not found";
$self->{function} = $f;
} catch {
$self->lambda_init_error($_);
$self->{function} = sub {};
undef;
};
}
sub handle_event {
my $self = shift;
$self->_init or return;
my ($payload, $context) = $self->lambda_next;
my $response = try {
local $AWS::Lambda::context = $context;
local $ENV{_X_AMZN_TRACE_ID} = $context->{trace_id};
lib/AWS/Lambda/Bootstrap.pm view on Meta::CPAN
}
}
sub lambda_response_streaming {
my $self = shift;
my ($response, $context) = @_;
my $runtime_api = $self->{runtime_api};
my $api_version = $self->{api_version};
my $request_id = $context->aws_request_id;
my $url = "http://${runtime_api}/${api_version}/runtime/invocation/${request_id}/response";
my $writer = undef;
try {
$response->(sub {
my $content_type = shift;
$writer = AWS::Lambda::ResponseWriter->new(
response_url => $url,
http => $self->{http},
);
$writer->_request($content_type);
return $writer;
});
lib/AWS/Lambda/Context.pm view on Meta::CPAN
sub log_group_name {
return $ENV{AWS_LAMBDA_LOG_GROUP_NAME} // die 'log_group_name is not found';
}
sub log_stream_name {
return $ENV{AWS_LAMBDA_LOG_STREAM_NAME} // die 'log_stream_name is not found';
}
sub identity {
return undef; # TODO
}
sub client_context {
return undef; # TODO
}
sub tenant_id {
my $self = shift;
return $self->{tenant_id};
}
1;
=encoding utf-8
lib/AWS/Lambda/ResponseWriter.pm view on Meta::CPAN
} else {
%args = @_;
}
my $http = $args{http} // HTTP::Tiny->new;
my $response_url = $args{response_url} // die '$LAMBDA_TASK_ROOT is not found';
my $content_type = $args{content_type} // 'application/json';
my $self = bless +{
response_url => $response_url,
http => $http,
handle => undef,
closed => 0,
}, $class;
return $self;
}
sub _request {
my ($self, $content_type) = @_;
my $response_url = $self->{response_url};
my $http = $self->{http};
my ($scheme, $host, $port, $path_query, $auth) = $http->_split_url($response_url);
lib/AWS/Lambda/ResponseWriter.pm view on Meta::CPAN
},
};
my $peer = $host;
# We remove the cached handle so it is not reused in the case of redirect.
# reuse for the same scheme, host and port
my $handle = delete $http->{handle};
if ( $handle ) {
unless ( $handle->can_reuse( $scheme, $host, $port, $peer ) ) {
$handle->close;
undef $handle;
}
}
$handle ||= $http->_open_handle( $request, $scheme, $host, $port, $peer );
$self->{handle} = $handle;
$handle->write_request_header(@{$request}{qw/method uri headers header_case/});
}
sub _handle_response {
my $self = shift;
t/02_error.t view on Meta::CPAN
my $error;
my $bootstrap = BootstrapMock->new(
handler => "error.handle",
runtime_api => "example.com",
task_root => "$FindBin::Bin/test_handlers",
lambda_next => sub {
return +{
key1 => 1,
key2 => 2,
key3 => 3,
}, undef;
},
lambda_error => sub {
my $self = shift;
$error = shift;
},
);
ok !$bootstrap->handle_event;
like $error, qr/some error/;
done_testing;
t/20_psgi.t view on Meta::CPAN
}
my $app = AWS::Lambda::PSGI->new;
subtest "API Gateway GET Request" => sub {
my $input = slurp_json("testdata/apigateway-get-request.json");
my $output = $app->format_input($input);
my $req = Plack::Request->new($output);
is $req->method, 'GET', 'method';
my $content;
warning_is { $content = slurp_fh($req->input) } undef, 'no warning';
is $content, '', 'content';
is $req->request_uri, '/foo%20/bar?query=hoge&query=fuga', 'request uri';
is $req->path_info, '/foo /bar', 'path info';
is $req->query_string, 'query=hoge&query=fuga', 'query string';
is $req->header('Header-Name'), 'Value1, Value2', 'header';
ok !$req->env->{'psgi.streaming'}, 'psgi.streaming';
};
subtest "API Gateway POST Request" => sub {
my $input = slurp_json("testdata/apigateway-post-request.json");
my $output = $app->format_input($input);
my $req = Plack::Request->new($output);
is $req->method, 'POST', 'method';
is $req->content_type, 'application/json', 'content-type';
my $content;
warning_is { $content = slurp_fh($req->input) } undef, 'no warning';
is $content, '{"hello":"ããã«ã¡ã¯ä¸ç"}', 'content';
is $req->request_uri, '/', 'request uri';
is $req->path_info, '/', 'path info';
is $req->query_string, '', 'query string';
ok !$req->env->{'psgi.streaming'}, 'psgi.streaming';
};
subtest "API Gateway Base64 encoded POST Request" => sub {
my $input = slurp_json("testdata/apigateway-base64-request.json");
my $output = $app->format_input($input);
my $req = Plack::Request->new($output);
is $req->method, 'POST', 'method';
# You have to add 'application/octet-stream' to binary media types.
# https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-payload-encodings-configure-with-console.html
is $req->content_type, 'application/octet-stream', 'content-type';
my $content;
warning_is { $content = slurp_fh($req->input) } undef, 'no warning';
is $content, '{"hello":"world"}', 'content';
is $req->request_uri, '/', 'request uri';
is $req->path_info, '/', 'path info';
is $req->query_string, '', 'query string';
ok !$req->env->{'psgi.streaming'}, 'psgi.streaming';
};
subtest "API Gateway v2 GET Request" => sub {
my $input = slurp_json("testdata/apigateway-v2-get-request.json");
my $output = $app->format_input($input);
my $req = Plack::Request->new($output);
is $req->method, 'GET', 'method';
my $content;
warning_is { $content = slurp_fh($req->input) } undef, 'no warning';
is $content, '', 'content';
is $req->request_uri, '/my/path?parameter1=value1¶meter1=value2¶meter2=value', 'request uri';
is $req->path_info, '/my/path', 'path info';
is $req->query_string, 'parameter1=value1¶meter1=value2¶meter2=value', 'query string';
is $req->header('Header1'), 'value1,value2', 'header';
ok !$req->env->{'psgi.streaming'}, 'psgi.streaming';
};
subtest "API Gateway v2 POST Request" => sub {
my $input = slurp_json("testdata/apigateway-v2-post-request.json");
my $output = $app->format_input($input);
my $req = Plack::Request->new($output);
is $req->method, 'POST', 'method';
my $content;
warning_is { $content = slurp_fh($req->input) } undef, 'no warning';
is $content, '{"hello":"ããã«ã¡ã¯ä¸ç"}', 'content';
is $req->request_uri, '/my/path', 'request uri';
is $req->path_info, '/my/path', 'path info';
is $req->query_string, '', 'query string';
ok !$req->env->{'psgi.streaming'}, 'psgi.streaming';
};
subtest "API Gateway v2 base64 Request" => sub {
my $input = slurp_json("testdata/apigateway-v2-base64-request.json");
my $output = $app->format_input($input);
my $req = Plack::Request->new($output);
is $req->method, 'POST', 'method';
my $content;
warning_is { $content = slurp_fh($req->input) } undef, 'no warning';
is $content, '{"hello":"world"}', 'content';
is $req->request_uri, '/my/path', 'request uri';
is $req->path_info, '/my/path', 'path info';
is $req->query_string, '', 'query string';
ok !$req->env->{'psgi.streaming'}, 'psgi.streaming';
};
subtest "ALB GET Request" => sub {
my $input = slurp_json("testdata/alb-get-request.json");
my $output = $app->format_input($input);
t/21_psgi_response_streaming.t view on Meta::CPAN
sub slurp_fh {
my $fh = $_[0];
local $/;
my $v = <$fh>;
defined $v ? decode_utf8($v) : '';
}
my $app = AWS::Lambda::PSGI->new;
subtest "array reference" => sub {
my $content_type = undef;
my $buf = "";
my $res = $app->_handle_response_stream([200, ["Content-Type" => "text/plain"], ["hello"]]);
my $responder = sub {
$content_type = shift;
open my $fh, ">", \$buf or die "failed to open: $!";
return $fh;
};
$res->($responder);
is $content_type, "application/vnd.awslambda.http-integration-response", "content type";
t/21_psgi_response_streaming.t view on Meta::CPAN
statusCode => 200,
headers => {
"content-type" => "text/plain",
},
cookies => [],
}, "prelude";
is $body, "hello", "body";
};
subtest "IO::Handle-like object" => sub {
my $content_type = undef;
open my $fh, "<", \"hello" or die "failed to open: $!";
my $buf = "";
my $res = $app->_handle_response_stream([200, ["Content-Type" => "text/plain"], $fh]);
my $responder = sub {
$content_type = shift;
open my $fh, ">", \$buf or die "failed to open: $!";
return $fh;
};
$res->($responder);
t/21_psgi_response_streaming.t view on Meta::CPAN
statusCode => 200,
headers => {
"content-type" => "text/plain",
},
cookies => [],
}, "prelude";
is $body, "hello", "body";
};
subtest "streaming response" => sub {
my $content_type = undef;
my $buf = "";
my $res = $app->_handle_response_stream(sub {
my $responder = shift;
my $writer = $responder->([200, ["Content-Type" => "text/plain"]]);
$writer->write("hello");
$writer->close;
});
my $responder = sub {
$content_type = shift;
open my $fh, ">", \$buf or die "failed to open: $!";