Skip to content

tokuhirom/Amon2-Lite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NAME

Amon2::Lite - Sinatra-ish framework on Amon2!

SYNOPSIS

use Amon2::Lite;

get '/' => sub {
    my ($c) = @_;
    return $c->render('index.tt');
};

__PACKAGE__->to_app();

__DATA__

@@ index.tt
<!doctype html>
<html>
    <body>Hello</body>
</html>

DESCRIPTION

This is a Sinatra-ish wrapper for Amon2.

THIS MODULE IS BETA STATE. API MAY CHANGE WITHOUT NOTICE.

FUNCTIONS

  • any(\@methods, $path, \&code)

  • any($path, \&code)

    Register new route for router.

  • get($path, $code->($c))

    Register new route for router.

  • post($path, $code->($c))

    Register new route for router.

  • __PACKAGE__->load_plugin($name, \%opts)

    Load a plugin to the context object.

  • [EXPERIMENTAL] __PACKAGE__->enable_session(%args)

    This method enables Plack::Middleware::Session.

    %args would be pass to enabled to Plack::Middleware::Session->new.

    The default state class is Plack::Session::State::Cookie, and store class is Plack::Session::Store::File.

    This option enables a response filter, that adds Cache-Control: private header.

  • [EXPERIMENTAL] __PACKAGE__->enable_middleware($klass, %args)

      __PACKAGE__->enable_middleware('Plack::Middleware::XFramework', framework => 'Amon2::Lite');
    

    Enable the Plack middlewares.

  • __PACKAGE__->to_app(%args)

    Create new PSGI application instance.

    There is a options.

    • no_x_content_type_options : default false

        __PACKAGE__->to_app(no_x_content_type_options => 1);
      

      Amon2::Lite puts X-Content-Type-Options header by default for security reason. You can disable this feature by this option.

    • no_x_frame_options

        __PACKAGE__->to_app(no_x_frame_options => 1);
      

      Amon2::Lite puts X-Frame-Options: DENY header by default for security reason. You can disable this feature by this option.

FAQ

  • How can I configure the options for Xslate?

    You can provide a constructor arguments by configuration. Write following lines on your app.psgi.

      __PACKAGE__->template_options(
          syntax => 'Kolon',
      );
    
  • How can I use other template engines instead of Text::Xslate?

    You can use any template engine with Amon2::Lite. You can overwrite create_view method same as normal Amon2.

    This is a example to use Text::MicroTemplate::File.

      use Tiffany::Text::MicroTemplate::File;
    
      sub create_view {
          Tiffany::Text::MicroTemplate::File->new(+{
              include_path => ['./tmpl/']
          })
      }
    
  • How can I handle static files?

    If you pass the 'handle_static' option to 'to_app' method, Amon2::Lite handles /static/ path to ./static/ directory.

      use Amon2::Lite;
      __PACKAGE__->to_app(handle_static => 1);
    
  • Where is a example codes?

    There is a tiny TinyURL example: https://github.com/tokuhirom/MyTinyURL/blob/master/app.psgi.

  • How can I use session?

    You can enable session by __PACKAGE__->enable_session(). And you can access the session object by $c->session accessor.

      use Amon2::Lite;
    
      get '/' => sub {
          my $c = shift;
          my $cnt = $c->session->get('cnt') || 1;
          $c->session->set('cnt' => $cnt+1);
          return $c->create_response(200, [], [$cnt]);
      };
    
      __PACKAGE__->enable_session(); # 
      __PACKAGE__->to_app();
    

AUTHOR

Tokuhiro Matsuno <tokuhirom AAJKLFJEF@ GMAIL COM>

SEE ALSO

LICENSE

Copyright (C) Tokuhiro Matsuno

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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages