Froody::Plugin
package My::Plugin; use base qw( Froody::Plugin ); sub new { my ($class, $impl, @args) = @_; my $self = $class->SUPER::new($impl, @args); $impl->mk_accessors( 'leg_count' ); return $self; } sub pre_process { my ($impl, $method, $params) = @_; $impl->leg_count( delete $params->{legs} || 2 ); } ... package My::Implementation; use base qw( Froody::Implementation ); __PACKAGE__->register_plugin('My::Plugin'); sub my_method { my ($self, $params) = @_; return $self->leg_count()." legs found.\n"; }
Froody plugins let you extend an implementation and add functionality without scary messing around with superclasses. They have a chance to get involved in the pre_process step of the request, and can add accessors to the importing class and instance.
sub new { my ($class, $impl, @args) = @_; my $self = $class->SUPER::new($impl, @args); $impl->mk_accessors( 'leg_count' ); return $self; }
Constructor, called as a class method. 'implementation class' here is the class doing the requiring of the plugin, and 'arguments' are all the remaining args passed to the require_plugin call.
the place to initialize your object. The return value is ignored.
plugins should override this method to return froody methods provided by the plugin. The methods will then be registered.
This is where your plugin gets to do interesting things to the request. See the docs for pre_process in Froody::Invoker::Implementation for details on what you can do here. Importantly, this is before parameter validation. For instance, a session management plugin could remove a 'session_id' param from the request here, and load a session:
sub pre_process { my ($self, $method, $param) = @_; my $session_id = delete $param->{session_id}; $self->session( $session_id ); }
and the method signature of the implementation wouldn't need to include it.
Note that the method is called with the first parameter being the implementation class, not the plugin class. If you need access to the plugin object, override plugin_pre_process (see below).
If you need access to your plugin instance, override this method. Its default behaviour (in Froody::Plugin) is to call pre_process, and not pass the plugin instance. Override this method or pre_process.
By overriding this method, you can preform actions after the implementation has done its work. See the docs for post_process in Froody::Invoker::Implementation for details on what you can do here. The 'args' param here is the hash returned from the implementation, before it is interpolated into the XML by the path walker, so you can change the returned XML, but only within the spec of the API.
If you need access to your plugin instance, override this method. Its default behaviour (in Froody::Plugin) is to call post_process, and not pass the plugin instance. Override this method or post_process.
By overriding this method, you can preform actions after the implementation has done it's work. See the docs for error_handler in Froody::Invoker::Implementation for details on what you can do here. The 'args' param here is the hash returned from the implementation, before it is interpolated into the XML by the path walker, so you can change the returned XML, but only within the spec of the API.
If you need access to your plugin instance, override this method. Its default behaviour (in Froody::Plugin) is to call error_handler, and not pass the plugin instance. Override this method or error_handler.
Copyright Fotango 2005. All rights reserved.
Please see the main Froody documentation for details of who has worked on this project.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Froody, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Froody
CPAN shell
perl -MCPAN -e shell install Froody
For more information on module installation, please visit the detailed CPAN module installation guide.