NAME

Nephia - Mini WAF

SYNOPSIS

### Get started the Nephia!
$ nephia-setup MyApp

### And, plackup it!
$ cd myapp
$ plackup

DESCRIPTION

Nephia is a mini web-application framework.

MOUNT A CONTROLLER

Use "path" function as following in lib/MyApp.pm .

First argument is path for mount a controller. This must be string.

Second argument is controller-logic. This must be code-reference.

In controller-logic, you may get Plack::Request object as first-argument, and controller-logic must return response-value as hash-reference or Plack::Response object.

Basic controller - Makes JSON response

Look this examples.

path '/foobar' => sub {
    my ( $req ) = @_;
    # Yet another syntax is following.
    # my $req = req;

    return {
        name => 'MyApp',
        query => $req->param('q'),
    };
};

This controller outputs response-value as JSON, and will be mounted on "/foobar".

Use templates - Render with Xslate (Kolon-syntax)

path '/' => sub {
    return {
        template => 'index.tx',
        title => 'Welcome to my homepage!',
    };
};

Attention to "template" attribute. If you specified it, controller searches template file from view-directory and render it.

If you use multibyte-string in response, please remember 'use utf8;' and, you may specify character-set as like as following.

path '/' => sub {
    return {
        template => 'mytemplate.tx',
        title => 'わたしのホォムペェジへよおこそ!',
        charset => 'Shift_JIS',
    };
};

If you not specified 'charset', it will be 'UTF-8'.

Makes any response - Using "res" function

path '/my-javascript' => sub {
    return res {
        content_type( 'text/javascript' );
        body( 'alert("Oreore!");' );
    };
};

"res" function returns Plack::Response object with customisable DSL-like syntax.

USING CONFIG

First, see app.psgi that generated by nephia-setup.

use strict;
use warnings;
use FindBin;

use lib ("$FindBin::Bin/lib", "$FindBin::Bin/extlib/lib/perl5");
use MyApp;
MyApp->run;

You may define config with run method as like as following.

MyApp->run( 
  attr1   => 'value',
  logpath => '/path/to/log',
  ...
);

And, you can access to these config in your application as following.

path '/foo/bar' => sub {
  my $config = config;
};

STATIC CONTENTS ( like as images, javascripts... )

You can look static-files that is into root directory via HTTP.

VALIDATE PARAMETERS

You may use validator with validate function.

path '/some/path' => sub {
    my $params = validate
        name => { isa => 'Str', default => 'Nameless John' },
        age => { isa => 'Int' }
    ;
};

See documentation of validate method and Data::Validator.

FUNCTIONS

path $path, $coderef_as_controller;

Mount controller on specified path.

req

Return Plack::Request object. You can call this function in coderef that is argument of path().

res $coderef

Return Plack::Response object with customisable DSL-like syntax.

config

Return config as hashref.

validate %validation_rules

Return validated parameters as hashref. You have to set validation rule as like as Data::Validator's instantiate arguments.

AUTHOR

ytnobody <ytnobody@gmail.com>

SEE ALSO

Plack::Request

Plack::Response

Plack::Builder

Text::Xslate

Text::Xslate::Syntax::Kolon

JSON

Data::Validator

LICENSE

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

1 POD Error

The following errors were encountered while parsing the POD:

Around line 63:

Non-ASCII character seen before =encoding in ''わたしのホォムペェジへよおこそ!','. Assuming UTF-8