Group
Extension

Dancer-Plugin-Res/lib/Dancer/Plugin/Res.pm

package Dancer::Plugin::Res;

our $VERSION = '0.0003'; # VERSION

use Dancer ':syntax';
use Dancer::Plugin;

register res => sub {
    my ($status, $body) = @_;
    $body = '' unless defined $body;
    status $status;
    return $body;
};

register_plugin;

# ABSTRACT: Syntax sugar for setting the status and returning a response


1;

__END__
=pod

=head1 NAME

Dancer::Plugin::Res - Syntax sugar for setting the status and returning a response

=head1 VERSION

version 0.0003

=head1 SYNOPSIS

    use Dancer;
    use Dancer::Plugin::Res;
    post '/widgets' => sub {
        return res 400 => to_json { err => 'name is required' }
            unless param 'name';
        # ...
        return res 201 => to_json { widget => $widget };
    };
    dance;

=head1 DESCRIPTION

This L<Dancer> plugin provides the keyword C<res()>, which stands for response.
It allows you to set the response and return a body in one shot.

    return res 400, { msg => reason };

is equivalent to:

    status 400;
    return { msg => reason };

I made this plugin because I wanted a function like L<send_error()>
that behaved more consistently.
C<send_error("reason ...", 500)> will not always render the first argument
you give it in the response.
When your app is running in production mode with C<show_errors> set to false,
it will attempt to render a generic 500.html page.
This is great for front-end only applications,
but not for creating an api where you always want your application to render the
thing that you told it to render.

=head1 FUNCTIONS

=head2 res

    res($status, [$reason])

Sets the status to $status and returns $reason.
If $reason is not provided, returns an empty string.

=head1 AUTHOR

Naveed Massjouni <naveedm9@gmail.com>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by Naveed Massjouni.

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

=cut



Powered by Groonga
Maintained by Kenichi Ishigaki <ishigaki@cpan.org>. If you find anything, submit it on GitHub.