NAME
MooX::Role::CachedURL - a role providing a locally cached copy of a remote file
SYNOPSIS
package MyClass;
use Moo;
with 'MooX::Role::CachedURL';
has '+url' => (default => sub { 'http://www.cpan.org/robots.txt' });
sub my_method {
my $self = shift;
# $self->path has the path to the local copy of the file
}
Then in the user of MyClass:
use MyClass;
my $object = MyClass->new(max_age => '2 days');
print "local file is ", $object->path, "\n";
DESCRIPTION
This role represents a remote file that you want to cache locally, and then process. This is common functionality that I'm pulling out of my PAUSE::Users, PAUSE::Permissions and PAUSE::Packages modules.
PAUSE::Users provides a simple interface to the 00whois.xml
file that is generated by PAUSE. It caches the file locally, then provides a mechanism for iterating over all users in the file.
If you look right now, you'll notice that none of those modules use this role yet; I'll be gradually refactoring them once this role is on CPAN.
ATTRIBUTES
url
This specifies the URL that should be cached locally. It should be over-ridden in the composing class, as shown in the SYNOPSIS above.
max_age
Specifies the maximum age of the local copy, in seconds. We won't even look for a new remote copy if the cached copy is younger than this.
You can specify max_age using any of the notations supported by Time::Duration::Parse. For example:
max_age => '2 hours',
TODO
Switch to LWP for general URL handling, not just HTTP
Ability for a class to transform content when caching
REPOSITORY
https://github.com/neilbowers/MooX-Role-CachedURL
AUTHOR
Neil Bowers <neilb@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2014 by Neil Bowers <neilb@cpan.org>.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.