WWW::Lengthen::Cached - WWW::Lengthen::Cached documentation


WWW-Lengthen documentation Contained in the WWW-Lengthen distribution.

Index


Code Index:

NAME

Top

WWW::Lengthen::Cached

SYNOPSIS

Top

    use WWW::Lengthen::Cached;
    use Cache::Memcached;
    my $lengthener = WWW::Lengthen::Cached->new;
    my $cached = Cache::Memcached->new(...);
    $lengthener->setup_cached($cached)

    my $lengthened_url = $lengthener->try($url);

DESCRIPTION

Top

You may want to reuse lengthened URLs. With this, you can store them in cache servers. Cache::Memcached and the likes (which have set/get methods) are supported.

METHODS

Top

setup_cached

takes an cache daemon object and store internally.

cache

If you want to change some settings of the stored cached, use this.

try

If the requested URL is stored in the cache, just returns it. Otherwise, tries to lengthen it, and stores it if appropriate.

AUTHOR

Top

Kenichi Ishigaki, <ishigaki@cpan.org>

COPYRIGHT AND LICENSE

Top


WWW-Lengthen documentation Contained in the WWW-Lengthen distribution.

package WWW::Lengthen::Cached;

use strict;
use warnings;
use Carp;
use base qw( WWW::Lengthen );

sub setup_cached {
  my ($self, $cache) = @_;

  croak "cached doesn't have get" unless $cache->can('get');
  croak "cached doesn't have set" unless $cache->can('set');

  $self->{cache} = $cache;
}

sub cache { shift->{cache} }

sub try {
  my ($self, $url) = @_;

  my $longer_url;
  if ( $longer_url = $self->cache->get( "www-lengthen:$url" ) ) {
    return $longer_url;
  }

  $longer_url = $self->SUPER::try( $url );

  if ( defined $longer_url ) {
    $self->cache->set( "www-lengthen:$url" => $longer_url );
  }
  return $longer_url;
}

1;

__END__