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

NAME

Weather::OpenWeatherMap::Cache - Cache manager for OpenWeatherMap results

SYNOPSIS

  # Usually used via Weather::OpenWeatherMap

DESCRIPTION

A simple cache manager for Weather::OpenWeatherMap results.

ATTRIBUTES

dir

The directory cache files are saved in.

Defaults to using a temporary directory that is cleaned up during object destruction (via Path::Tiny / File::Temp).

If you specify a directory, no automated cleanup is done other than normal object expiry checks during calls to "retrieve".

expiry

The duration (in seconds) cache files are considered valid; defaults to 1200.

METHODS

High-level methods

cache

Takes a list of Weather::OpenWeatherMap::Result objects and caches to "dir".

Returns the number of items cached.

retrieve

Takes a Weather::OpenWeatherMap::Request and attempts to retrieve a (non-expired) cached Weather::OpenWeatherMap::Result.

Returns false if no item was found.

If successful, the return value is a simple struct-like object with two attributes, cached_at (the time() that the cached item was saved) and object (the relevant Weather::OpenWeatherMap::Result object):

  my $result;
  if (my $cached = $cache->retrieve($request)) {
    $result = $cached->object
  }

Low-level methods

Subclasses can override the following methods to alter cache behavior.

cache_paths

Returns a list of Path::Tiny objects representing (what appear to be) Weather::OpenWeatherMap cache files.

clear

Walk our "dir", removing any items that appear to belong to the cache.

Returns the list of removed paths (as strings).

deserialize

Takes a scalar containing serialized cache data and returns a Perl object or data structure.

Uses Storable by default.

expire

Given a Weather::OpenWeatherMap::Request or Weather::OpenWeatherMap::Result, removes relevant stale cache data.

If passed no arguments, calls "expire_all".

Called by "retrieve" before object retrieval.

Returns true if a cached object was expired.

expire_all

Expires any stale cache files found in "dir".

is_cached

Takes a Weather::OpenWeatherMap::Request or Weather::OpenWeatherMap::Result and returns boolean true if the object is cached.

make_path

Takes a Weather::OpenWeatherMap::Request or Weather::OpenWeatherMap::Result and returns an appropriate Path::Tiny object representing the path that would be used to cache or retrieve the object.

serialize

Takes a Perl object or data structure and returns serialized cache data suitable for writing to disk.

Uses Storable by default.

AUTHOR

Jon Portnoy <avenj@cobaltirc.org>