view release on metacpan or search on metacpan
0.205001 2017-07-11 08:03:21-05:00 America/Chicago
[ BUG FIXES ]
* GH #1332: Add check for old version of HTTP::XSCookies (Peter Mottram -
SysPete)
* GH #1336: Fix warnings on 5.10 and below. (Sawyer X)
* GH #1347: Add Perl versions 5.22-5.26 and appveyor to Travis-CI
configuration (Dave Jacoby)
[ ENHANCEMENTS ]
* GH #1281: Use Ref::Util in Core for all reference checks (Mickey
Nasriachi)
* GH #1338: Add message explaining how to run newly-created application
(Jonathan Cast)
[ DOCUMENTATION ]
* GH #1334: Fix prefix example in Cookbook (Abdullah Diab)
* GH #1335: Add missing word in request->host docs (Glenn Fowler)
* GH #1337: Fix link in SEE ALSO section of Dancer2::Core::Types (Stefan
Hornburg - Racke)
* GH #1341: Clarify plugin documentation (Stefan Hornburg - Racke)
"MIME::Base64" : "3.13",
"Module::Pluggable" : "0",
"Module::Runtime" : "0",
"Moo" : "2.000000",
"Moo::Role" : "0",
"POSIX" : "0",
"Path::Tiny" : "0",
"Plack" : "1.0040",
"Plack::Middleware::FixMissingBodyInRedirect" : "0",
"Plack::Middleware::RemoveRedundantBody" : "0",
"Ref::Util" : "0",
"Role::Tiny" : "2.000000",
"Safe::Isa" : "0",
"Sub::Quote" : "0",
"Template" : "0",
"Template::Tiny" : "0",
"Test::Builder" : "0",
"Test::More" : "0.92",
"Type::Tiny" : "1.000006",
"Types::Standard" : "0",
"URI::Escape" : "0",
MIME::Base64: '3.13'
Module::Pluggable: '0'
Module::Runtime: '0'
Moo: '2.000000'
Moo::Role: '0'
POSIX: '0'
Path::Tiny: '0'
Plack: '1.0040'
Plack::Middleware::FixMissingBodyInRedirect: '0'
Plack::Middleware::RemoveRedundantBody: '0'
Ref::Util: '0'
Role::Tiny: '2.000000'
Safe::Isa: '0'
Sub::Quote: '0'
Template: '0'
Template::Tiny: '0'
Test::Builder: '0'
Test::More: '0.92'
Type::Tiny: '1.000006'
Types::Standard: '0'
URI::Escape: '0'
Makefile.PL view on Meta::CPAN
"MIME::Base64" => "3.13",
"Module::Pluggable" => 0,
"Module::Runtime" => 0,
"Moo" => "2.000000",
"Moo::Role" => 0,
"POSIX" => 0,
"Path::Tiny" => 0,
"Plack" => "1.0040",
"Plack::Middleware::FixMissingBodyInRedirect" => 0,
"Plack::Middleware::RemoveRedundantBody" => 0,
"Ref::Util" => 0,
"Role::Tiny" => "2.000000",
"Safe::Isa" => 0,
"Sub::Quote" => 0,
"Template" => 0,
"Template::Tiny" => 0,
"Test::Builder" => 0,
"Test::More" => "0.92",
"Type::Tiny" => "1.000006",
"Types::Standard" => 0,
"URI::Escape" => 0,
Makefile.PL view on Meta::CPAN
"Module::Pluggable" => 0,
"Module::Runtime" => 0,
"Moo" => "2.000000",
"Moo::Role" => 0,
"POSIX" => 0,
"Path::Tiny" => 0,
"Plack" => "1.0040",
"Plack::Middleware::FixMissingBodyInRedirect" => 0,
"Plack::Middleware::RemoveRedundantBody" => 0,
"Pod::Simple::SimpleTree" => 0,
"Ref::Util" => 0,
"Role::Tiny" => "2.000000",
"Safe::Isa" => 0,
"Sub::Quote" => 0,
"Template" => 0,
"Template::Tiny" => 0,
"Test::Builder" => 0,
"Test::EOL" => 0,
"Test::Fatal" => 0,
"Test::More" => "0.92",
"Type::Tiny" => "1.000006",
requires 'MIME::Base64', '3.13'; # 3.13 has the URL safe variants
requires 'Module::Runtime';
requires 'Moo', '2.000000';
requires 'Moo::Role';
requires 'parent';
requires 'Path::Tiny';
requires 'Plack', '1.0040';
requires 'Plack::Middleware::FixMissingBodyInRedirect';
requires 'Plack::Middleware::RemoveRedundantBody';
requires 'POSIX';
requires 'Ref::Util';
requires 'Safe::Isa';
requires 'Sub::Quote';
requires 'Template';
requires 'Template::Tiny';
requires 'Test::Builder';
requires 'Test::More';
requires 'Types::Standard';
requires 'Type::Tiny', '1.000006';
requires 'URI::Escape';
requires 'CLI::Osprey';
lib/Dancer2/Core/App.pm view on Meta::CPAN
$Dancer2::Core::App::VERSION = '1.1.2';
use Moo;
use Carp qw<croak carp>;
use Scalar::Util 'blessed';
use List::Util ();
use Module::Runtime 'is_module_name';
use Safe::Isa;
use Sub::Quote;
use File::Spec;
use Module::Runtime qw< require_module use_module >;
use Ref::Util qw< is_ref is_arrayref is_globref is_scalarref is_regexpref >;
use Plack::App::File;
use Plack::Middleware::FixMissingBodyInRedirect;
use Plack::Middleware::Head;
use Plack::Middleware::Conditional;
use Plack::Middleware::ConditionalGET;
use Dancer2::FileUtils 'path';
use Dancer2::Core;
use Dancer2::Core::Cookie;
lib/Dancer2/Core/Cookie.pm view on Meta::CPAN
package Dancer2::Core::Cookie;
# ABSTRACT: A cookie representing class
$Dancer2::Core::Cookie::VERSION = '1.1.2';
use Moo;
use URI::Escape;
use Dancer2::Core::Types;
use Dancer2::Core::Time;
use Carp 'croak';
use Ref::Util qw< is_arrayref is_hashref >;
use overload '""' => \&_get_value;
BEGIN {
my $try_xs =
exists($ENV{PERL_HTTP_XSCOOKIES}) ? !!$ENV{PERL_HTTP_XSCOOKIES} :
exists($ENV{PERL_ONLY}) ? !$ENV{PERL_ONLY} :
1;
my $use_xs = 0;
$try_xs and eval {
lib/Dancer2/Core/DSL.pm view on Meta::CPAN
# ABSTRACT: Dancer2's Domain Specific Language (DSL)
package Dancer2::Core::DSL;
$Dancer2::Core::DSL::VERSION = '1.1.2';
use Moo;
use Carp;
use Module::Runtime 'require_module';
use Ref::Util qw< is_arrayref is_hashref >;
use Dancer2::Core::Hook;
use Dancer2::FileUtils;
use Dancer2::Core::Response::Delayed;
with 'Dancer2::Core::Role::DSL';
sub hook_aliases { +{} }
sub supported_hooks { () }
sub _add_postponed_plugin_hooks {
lib/Dancer2/Core/Error.pm view on Meta::CPAN
# ABSTRACT: Class representing fatal errors
$Dancer2::Core::Error::VERSION = '1.1.2';
use Moo;
use Carp;
use Dancer2::Core::Types;
use Dancer2::Core::HTTP;
use Data::Dumper;
use Dancer2::FileUtils qw/path open_file/;
use Sub::Quote;
use Module::Runtime 'require_module';
use Ref::Util qw< is_hashref >;
use Clone qw(clone);
has app => (
is => 'ro',
isa => InstanceOf['Dancer2::Core::App'],
predicate => 'has_app',
);
has show_stacktrace => (
is => 'ro',
lib/Dancer2/Core/Request.pm view on Meta::CPAN
use strict;
use warnings;
use parent 'Plack::Request';
use Carp;
use Encode;
use URI;
use URI::Escape;
use Safe::Isa;
use Hash::MultiValue;
use Ref::Util qw< is_ref is_arrayref is_hashref is_coderef >;
use Dancer2::Core::Types;
use Dancer2::Core::Request::Upload;
use Dancer2::Core::Cookie;
# add an attribute for each HTTP_* variables
# (HOST is managed manually)
my @http_env_keys = (qw/
accept_charset
accept_encoding
lib/Dancer2/Core/Role/SessionFactory.pm view on Meta::CPAN
use Moo::Role;
with 'Dancer2::Core::Role::Engine';
use Carp 'croak';
use Dancer2::Core::Session;
use Dancer2::Core::Types;
use Digest::SHA 'sha1';
use List::Util 'shuffle';
use MIME::Base64 'encode_base64url';
use Module::Runtime 'require_module';
use Ref::Util qw< is_ref is_arrayref is_hashref >;
sub hook_aliases { +{} }
sub supported_hooks {
qw/
engine.session.before_retrieve
engine.session.after_retrieve
engine.session.before_create
engine.session.after_create
lib/Dancer2/Core/Role/Template.pm view on Meta::CPAN
# ABSTRACT: Role for template engines
package Dancer2::Core::Role::Template;
$Dancer2::Core::Role::Template::VERSION = '1.1.2';
use Dancer2::Core::Types;
use Dancer2::FileUtils 'path';
use Carp 'croak';
use Ref::Util qw< is_ref >;
use Moo::Role;
with 'Dancer2::Core::Role::Engine';
sub hook_aliases {
{
before_template_render => 'engine.template.before_render',
after_template_render => 'engine.template.after_render',
before_layout_render => 'engine.template.before_layout_render',
after_layout_render => 'engine.template.after_layout_render',
lib/Dancer2/Core/Route.pm view on Meta::CPAN
package Dancer2::Core::Route;
# ABSTRACT: Dancer2's route handler
$Dancer2::Core::Route::VERSION = '1.1.2';
use Moo;
use Dancer2::Core::Types;
use Module::Runtime 'use_module';
use Carp 'croak';
use List::Util 'first';
use Scalar::Util 'blessed';
use Ref::Util qw< is_regexpref >;
use Type::Registry;
our ( $REQUEST, $RESPONSE, $RESPONDER, $WRITER, $ERROR_HANDLER );
has name => (
is => 'ro',
isa => Str,
predicate => 'has_name',
);
lib/Dancer2/Core/Runner.pm view on Meta::CPAN
package Dancer2::Core::Runner;
# ABSTRACT: Top-layer class to start a dancer app
$Dancer2::Core::Runner::VERSION = '1.1.2';
use Moo;
use Carp 'croak';
use Module::Runtime 'require_module';
use Dancer2::Core::MIME;
use Dancer2::Core::Types;
use Dancer2::Core::Dispatcher;
use Plack::Builder qw();
use Ref::Util qw< is_ref is_regexpref >;
# Hashref of configurable items for the runner.
# Defaults come from ENV vars. Updated via global triggers
# from app configs.
has config => (
is => 'ro',
isa => HashRef,
lazy => 1,
builder => '_build_config',
);
lib/Dancer2/Logger/Capture.pm view on Meta::CPAN
This is a logger class for L<Dancer2> which captures all logs to an object.
Its primary purpose is for testing. Here is an example of a test:
use strict;
use warnings;
use Test::More;
use Plack::Test;
use HTTP::Request::Common;
use Ref::Util qw<is_coderef>;
{
package App;
use Dancer2;
set log => 'debug';
set logger => 'capture';
get '/' => sub {
log(debug => 'this is my debug message');
lib/Dancer2/Manual/Migration.pod view on Meta::CPAN
L<Dancer2::Logger::Capture> could be used for testing, to capture all
logs to an object.
For example:
use strict;
use warnings;
use Test::More import => ['!pass'];
use Plack::Test;
use HTTP::Request::Common;
use Ref::Util qw<is_coderef>;
{
package App;
use Dancer2;
set log => 'debug';
set logger => 'capture';
get '/' => sub {
debug 'this is my debug message';
lib/Dancer2/Plugin.pm view on Meta::CPAN
$Dancer2::Plugin::VERSION = '1.1.2';
use strict;
use warnings;
use Moo;
use Carp;
use List::Util qw/ reduce /;
use Module::Runtime 'require_module';
use Attribute::Handlers;
use Scalar::Util;
use Ref::Util qw<is_arrayref is_coderef>;
our $CUR_PLUGIN;
extends 'Exporter::Tiny';
with 'Dancer2::Core::Role::Hookable';
has app => (
is => 'ro',
weak_ref => 1,
lib/Dancer2/Template/Implementation/ForkedTiny.pm view on Meta::CPAN
package Dancer2::Template::Implementation::ForkedTiny;
$Dancer2::Template::Implementation::ForkedTiny::VERSION = '1.1.2';
# ABSTRACT: Dancer2 own implementation of Template::Tiny
use 5.00503;
use strict;
no warnings;
use Ref::Util qw<is_arrayref is_coderef is_plain_hashref>;
# Evaluatable expression
my $EXPR = qr/ [a-z_][\w.]* /xs;
sub new {
my $self = bless {
start_tag => '[%',
end_tag => '%]',
@_[ 1 .. $#_ ]
},
lib/Dancer2/Template/Simple.pm view on Meta::CPAN
package Dancer2::Template::Simple;
# ABSTRACT: Pure Perl 5 template engine for Dancer2
$Dancer2::Template::Simple::VERSION = '1.1.2';
use Moo;
use Dancer2::FileUtils 'read_file_content';
use Ref::Util qw<is_arrayref is_coderef is_plain_hashref>;
with 'Dancer2::Core::Role::Template';
has start_tag => (
is => 'rw',
default => sub {'<%'},
);
has stop_tag => (
is => 'rw',
lib/Dancer2/Test.pm view on Meta::CPAN
$Dancer2::Test::VERSION = '1.1.2';
use strict;
use warnings;
use Carp qw<carp croak>;
use Test::More;
use Test::Builder;
use URI::Escape;
use Data::Dumper;
use File::Temp;
use Ref::Util qw<is_arrayref>;
use parent 'Exporter';
our @EXPORT = qw(
dancer_response
response_content_is
response_content_isnt
response_content_is_deeply
response_content_like
response_content_unlike
share/skel/t/002_index_route.t view on Meta::CPAN
use strict;
use warnings;
use [d2% appname %2d];
use Test::More tests => 2;
use Plack::Test;
use HTTP::Request::Common;
use Ref::Util qw<is_coderef>;
my $app = [d2% appname %2d]->to_app;
ok( is_coderef($app), 'Got app' );
my $test = Plack::Test->create($app);
my $res = $test->request( GET '/' );
ok( $res->is_success, '[GET /] successful' );
t/00-report-prereqs.dd view on Meta::CPAN
'MIME::Base64' => '3.13',
'Module::Pluggable' => '0',
'Module::Runtime' => '0',
'Moo' => '2.000000',
'Moo::Role' => '0',
'POSIX' => '0',
'Path::Tiny' => '0',
'Plack' => '1.0040',
'Plack::Middleware::FixMissingBodyInRedirect' => '0',
'Plack::Middleware::RemoveRedundantBody' => '0',
'Ref::Util' => '0',
'Role::Tiny' => '2.000000',
'Safe::Isa' => '0',
'Sub::Quote' => '0',
'Template' => '0',
'Template::Tiny' => '0',
'Test::Builder' => '0',
'Test::More' => '0.92',
'Type::Tiny' => '1.000006',
'Types::Standard' => '0',
'URI::Escape' => '0',
t/charset_server.t view on Meta::CPAN
use Test::More;
use strict;
use warnings;
use Encode;
use utf8;
use Plack::Test;
use HTTP::Request::Common;
use Ref::Util qw<is_coderef>;
{
package App;
use Dancer2;
get '/name/:name' => sub {
"Your name: " . params->{name};
};
post '/name' => sub {
t/classes/Dancer2-Core-Route/match.t view on Meta::CPAN
use strict;
use warnings;
use Test::More;
use Test::Fatal;
use Dancer2::Core::Request;
use Dancer2::Core::Route;
use Capture::Tiny 0.12 'capture_stderr';
use Ref::Util qw<is_regexpref>;
use lib 't/lib';
my @tests = (
[ [ 'get', '/', sub {11} ], '/', [ {}, 11 ] ],
[ [ 'get', '/', sub {11} ],
'/failure',
[ undef, 11 ]
],
# token tests
t/dancer-test.t view on Meta::CPAN
# who test the tester? We do!
use strict;
use warnings;
use File::Spec;
use File::Basename qw/dirname/;
use Ref::Util qw<is_arrayref>;
BEGIN {
# Disable route handlers so we can actually test route_exists
# and route_doesnt_exist. Use config that disables default route handlers.
$ENV{DANCER_CONFDIR} = File::Spec->catdir(dirname(__FILE__), 'dancer-test');
}
use Test::More tests => 50;
use Dancer2;
t/dispatcher.t view on Meta::CPAN
use strict;
use warnings;
use Test::More import => ['!pass'];
use Carp 'croak';
use Ref::Util qw<is_regexpref>;
use Dancer2;
use Dancer2::Core::App;
use Dancer2::Core::Route;
use Dancer2::Core::Dispatcher;
use Dancer2::Core::Hook;
use Dancer2::Core::Response;
set logger => 'Null';
t/dsl/error_template.t view on Meta::CPAN
use strict;
use warnings;
use Test::More;
use Plack::Test;
use HTTP::Request::Common;
use Ref::Util qw<is_coderef>;
{
package CustomError;
use Dancer2;
set views => 't/corpus/pretty';
set public_dir => 't/corpus/pretty_public';
get '/error' => sub {
t/dsl/halt.t view on Meta::CPAN
use strict;
use warnings;
use Test::More;
use Plack::Test;
use HTTP::Request::Common;
use Ref::Util qw<is_coderef>;
subtest 'halt within routes' => sub {
{
package App;
use Dancer2;
get '/' => sub { 'hello' };
get '/halt' => sub {
response_header 'X-Foo' => 'foo';
t/dsl/halt_with_param.t view on Meta::CPAN
use strict;
use warnings;
use Test::More;
use Plack::Test;
use HTTP::Request::Common;
use Ref::Util qw<is_coderef>;
subtest 'halt with parameter within routes' => sub {
{
package App;
use Dancer2;
get '/' => sub { 'hello' };
get '/halt' => sub {
response_header 'X-Foo' => 'foo';
t/dsl/pass.t view on Meta::CPAN
use strict;
use warnings;
use Test::More;
use Plack::Test;
use HTTP::Request::Common;
use Ref::Util qw<is_coderef>;
subtest 'pass within routes' => sub {
{
package App;
use Dancer2;
get '/' => sub { 'hello' };
get '/**' => sub {
response_header 'X-Pass' => 'pass';