The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

POE::Component::WWW::Shorten - A non-blocking POE wrapper around WWW::Shorten.

SYNOPSIS

  use POE qw(Component::WWW::Shorten);

  my $poco = POE::Component::WWW::Shorten->spawn( alias => 'shorten', type => 'Metamark' );

  POE::Session->create(
        package_states => [
                'main' => [ qw(_start _shortened) ],
        ],
  );

  $poe_kernel->run();
  exit 0;

  sub _start {
        my ($kernel,$heap) = @_[KERNEL,HEAP];

        $kernel->post( 'shorten' => 'shorten' => 
          { 
                url => 'http://reallyreallyreallyreally/long/url',
                event => '_shortened',
                _arbitary_value => 'whatever',
          }
        );
        undef;
  }

  sub _shortened {
        my ($kernel,$heap,$returned) = @_[KERNEL,HEAP,ARG0];

        if ( $returned->{short} ) {
           print STDOUT $returned->{short} . "\n";
        }

        print STDOUT $returned->{_arbitary_value} . "\n";
        undef;
  }

DESCRIPTION

POE::Component::WWW::Shorten is a POE component that provides a non-blocking wrapper around WWW::Shorten. It accepts 'shorten' events and will return a shortened url.

If the type of shortening to do is not specified it uses the WWW::Shorten default which is WWW::Shorten::Metamark.

CONSTRUCTOR

spawn

Takes a number of arguments all are optional. Returns an object.

  'alias', specify a POE Kernel alias for the component;
  'options', a hashref of POE Session options to pass to the component's session;
  'type', the WWW::Shorten sub module to use, default is 'Metamark';
  'params', the parameter for the makeshortenlink call to WWW::Shorten;

METHODS

These are for the OO interface to the component.

shorten

Requires a hashref as first argument. See 'shorten' event below for details.

session_id

Takes no arguments. Returns the POE Session ID of the component.

shutdown

Takes no arguments, terminates the component.

INPUT

What POE events our component will accept.

shorten

Requires a hashref as first argument. The hashref should contain the following keyed values:

  'url', the url that you want shortening. ( Mandatory ).
  'event', the name of the event to send the reply to. ( Mandatory ).
  'session', optional, an alternative session: alias, ref or ID that the response should be 
             sent to, defaults to sending session;

You may also pass arbitary key/values in the hashref ( as demonstrated in the SYNOPSIS ). Arbitary keys should have an underscore prefix '_'.

shutdown

Takes no arguments, terminates the component.

OUTPUT

Whether the OO or POE API is used the component passes responses back via a POE event. ARG0 will be a hashref with the following key/value pairs:

  'url', the url that you wanted shortening.
  'short', the shortened version. ( This will be undef if something went wrong ).
  

The hashref will also contain any arbitary key/values that were passed in the original query.

AUTHOR

Chris BinGOs Williams <chris@bingosnet.co.uk>

LICENSE

Copyright © Chris Williams

This module may be used, modified, and distributed under the same terms as Perl itself. Please see the license that came with your Perl distribution for details.

SEE ALSO

POE

WWW::Shorten