Oleg Komarov > Plack-ResponseHelper-0.05 > Plack::ResponseHelper

Download:
Plack-ResponseHelper-0.05.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Source  

NAME ^

Plack::ResponseHelper

SYNOPSIS ^

You can treat it as a micro-framework:

in app.psgi

    use Plack::Request;
    use Plack::ResponseHelper json => 'JSON',
                              text => 'Text';

    my $app = sub {
        my $env = shift;
        my $form = Plack::Request->new($env)->parameters();
        my $controller = ...;
        respond $controller->($form);
    };

somewhere in your controllers

    sub my_controller {
        ...
        return json => {status => 'ok', data => [1, 2, 3]};
    }

    # or
    sub dummy_controller {
        return text => "It works!";
    }

Or if your app is even less sophisticated, just

    use Plack::ResponseHelper text => 'Text';
    sub {
        respond text => 'Hello world!';
    }

DESCRIPTION ^

A very thin layer that abstracts Plack's specifics.

Bundled with Plack::ResponseHelper::Attachment, Plack::ResponseHelper::JSON, Plack::ResponseHelper::Redirect, Plack::ResponseHelper::Text.

METHODS ^

use options

    use Plack::ResponseHelper $type1 => $helper1, ...;

Here you declare your types, it means that you have to use these types in your calls to respond.

$helper is short helper's name, a plus sign can be used:

    # will load Plack::ResponseHelper::JSON
    use Plack::ResponseHelper json => 'JSON';

    # will load Plack::ResponseHelper::My::Helper
    use Plack::ResponseHelper my_helper => '+My::Helper';

respond

    respond $type => $response;

respond is always imported. Two arguments are required: the type of response and the response itself.

AUTHORING YOUR OWN HELPERS ^

Your module just has to contain a helper function that returns a coderef for processing the response data structure that is passed to respond.

For more complex helpers you may need to be able to customize their behaviour, this is achieved by passing an $init parameter:

    use Plack::ResponseHelper my_helper => ['My::Helper', $init];

$init can be anything that PX::RH::My::Helper supports, e.g. a code ref that returns some dynamic data, or just a hashref with configuration options.

    package Plack::ResponseHelper::My::Helper;
    use strict;
    use warnings;

    sub helper {
        my $init = shift;
        my $content_type = $init && $init->{content_type} || 'text/plain';

        return sub {
            my $r = shift;
            return [
                200,
                ['Content-type' => $content_type],
                ['Hello world!']
            ];
        };
    }

    1;

LICENSE ^

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

syntax highlighting: