NAME
Jedi::App - to define your application
VERSION
version 1.008
DESCRIPTION
A Jedi::App is a Moo class with a 'jedi_app' method. This method is call directly by Jedi to mount your app in the required path.
REQUIRED METHOD
jedi_app
This method is automatically called by Jedi to initialize your app.
You have to define the relative route the app takes
sub jedi_app {
my ($app) = @_;
$app->get('/' => sub {
my ($app, $request, $response) = @_;
# ...
});
$app->post('/signin', $app->can('route_signin')),
}
sub route_signin {
my ($app, $request, $response) = @_;
# ...
}
The return will decide if Jedi need to continue to any other matching routes, or stop here.
If the return is true, the route continue.
If the return is false, the route stop here.
You can for instance :
sub jedi_app {
my ($app) = @_;
$app->get(qr{.*}, $app->can("check_auth"));
$app->get('/', $app->can("handle_index"));
}
sub check_app{
my ($app, $request, $response) = @_;
# check auth
if (!$auth_ok) {
$response->status('302');
$response->set_header('Location', '/auth');
return 0;
}
return 1;
}
DEFINE YOUR ROUTES
All routes will take ($app, $request, $response).
get
Define a GET method.
$app->get("/", sub{...});
post
Define a POST method.
$jedi->post("/", sub{...});
put
Define a PUT method.
$jedi->put("/", sub{...});
del
Define a DEL method.
$jedi->del("/", sub{...});
missing
If no route matches, all the missing method is executed.
$jedi->missing(sub{...});
CONFIG
The 'config' attribute of Jedi is passed to all your apps.
You can access to it with the 'jedi_config' attribute :
sub jedi_app {
my ($app) = @_;
my $admin_token = $app->jedi_config->{MyConf}{admin}{token};
# ...
}
SERVER HOST IP
To get the server host ip, use the method 'jedi_host_ip' :
sub jedi_app {
my ($app) = @_;
say "Server Host IP : ", $app->jedi_host_ip;
}
THE REPONSE
Each route will call your method with : ($app, $request, $response).
'$app' is the 'self' of your package, a Jedi::App
'$request' is the request, a Jedi::Request
'$response' is the object you need to manipulate to prepare your response, a Jedi::Response
Checkout the documentation of each of them to get all the possibilities.
BUGS
Please report any bugs or feature requests on the bugtracker website https://github.com/celogeek/perl-jedi/issues
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.
AUTHOR
celogeek <me@celogeek.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by celogeek <me@celogeek.com>.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.