Advertisement
kwasinski

Core::Router

Aug 22nd, 2022
1,096
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.25 KB | None | 0 0
  1. package HonbuDojo::Units::Core::Http::Router;
  2.  
  3. use Mojo::Base 'Mojolicious', -signatures, -base;
  4.  
  5. use Mojolicious::Controller;
  6. use Mojolicious::Routes;
  7. use Mojolicious::Routes::Match;
  8.  
  9. use HonbuDojo::Units::User::Http::Routes::UserRoutes;
  10.  
  11. use Data::Dumper qw/Dumper/;
  12.  
  13. has 'routes';
  14.  
  15. sub init($self, $routes)
  16. {
  17.     $routes->namespaces([
  18.         'HonbuDojo::Units',
  19.     ]);
  20.  
  21.     HonbuDojo::Units::User::Http::Routes::UserRoutes->new;
  22.  
  23.     $self->dispatch();
  24. }
  25.  
  26. sub dispatch($self)
  27. {
  28.  
  29.     foreach my $routeData (@{$self->routes})
  30.     {
  31.         my $method = lc $routeData->{method};
  32.         my $uri = $routeData->{uri};
  33.  
  34.         my $middlewares  = $routeData->{middlewares} || undef;
  35.         my $controller  = $1    if $routeData->{controller} =~ m/^(.+)\@/;
  36.         my $action      = $1    if $routeData->{controller} =~ m/\@(.+)$/;
  37.  
  38.         $self->handleMiddleWares($middlewares);
  39.  
  40.         $self->routes->$method($uri)->to(
  41.             controller => $controller,
  42.             action => $action,
  43.         );
  44.     }
  45. }
  46.  
  47. sub handleMiddleWares
  48. {
  49.     my ($self, $middlewares) = @_;
  50.  
  51.     ## TODO:: rename Plack::Midleware nameSpace to the Unit::blablabla ones
  52.     $self->plugin(
  53.         plack_middleware => $middlewares,
  54.     );
  55. }
  56.  
  57.  
  58. 1;
  59.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement