Egg::D::Stand - Standard dispatch for Egg.
Example of code in which dispatch is made from control.
sub create_dispatch { my($e)= @_; $e->{dispatch}= Egg::D::Stand->_new($e); }
When the constructor is called, dispatch_map of dispatch on the project side is called.
How the behavior at each request is done on the dispatch_map side has been decided. How to call sub-dispatch can be decided with dispatch_map.
If finished of the call of the constructor is effective, nothing is done.
It is an example of dispatch_map as follows.
package MYPROJECT::D; use strict; use Egg::Const; sub dispatch_map { my($dis, $e)= @_; # # The directory name of Request Path of the first hierarchy is received. # If it is empty, ARGS is returned to call _default # of MYPROJECT::D::Root. # my $dir1= $e->snip->[0] || return qw{ Root }; if ($dir1=~/^hoge/) { # # The directory name of the second hierarchy is received. # If it is empty, the template definition is returned. (It is 0 to # actually extend.) # And, it tries always to call _begin and _end though _default of # Root is not called. # my $dir2= $e->snip->[1] || return $dis->_template('/hoge/index.tt'); if ($dir2=~/^foo/) { # # Processing is entrusted to index (method) # of MYPROJECT::D::Foo. # The thing that $e->response->body is defined or template by # index is expected. # return qw{ Foo index }; } else { # # The method of the leading part of MYPROJECT::D::Foo is undefined. # It defines it directly guessing the template. # _begin and _end are called. # When 1 is given to the second argument of make, existence under # of $e->config->{root} is checked. # 404 is returned in case of not being. # return ('Foo', 0, $dis->_template_make("/$dir1/$dir2", 1)); } } elsif ($dir1=~/^boo/) { # # _default of MYPROJECT::D::Boo operates if it is empty. # my $dir2= $e->snip->[1] || return qw{ Boo }; if ($dir=~/.+\.txt$/) { # # If the second hierarchy is a file name, contents of a suitable # file are returned. And, $e->responce->body is defined. # $e->responce->content_type('text/plain'); open FH, "/path/to/boo.txt" || return $e->finished( NOT_FOUND ); $e->responce->body( join '', <FH> ); close FH; return 0; } else { return $e->finished( FORBIDDEN ); # Forbidden is returned. } } # # All requests not matched above are returned by _default # of MYPROJECT::D::Root. # return return qw{ Root }; # # # Or, when you return Not Found. return $e->finished( NOT_FOUND ); # }
The template is decided. When 1 is given to the second argument of make, existence under of $e->config->{root} is checked. 404 is returned in case of not being.
Template is guessed by given Path. After a suitable template is decided, processing is passed to $e->_template.
After the name supplemented with MYPROJECT::D is packaged in require, the name is returned.
Egg::Release
Masatoshi Mizuno, <mizuno@bomcity.com>
Copyright (C) 2006 Bee Flag, Corp. <http://egg.bomcity.com/>, All Rights Reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.
To install Egg::Release, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Egg::Release
CPAN shell
perl -MCPAN -e shell install Egg::Release
For more information on module installation, please visit the detailed CPAN module installation guide.