Dist::Zilla::Role::MetaCPANInterfacer

# NAME

Dist::Zilla::Role::MetaCPANInterfacer - something that will interact with MetaCPAN's API

# SYNOPSIS

        # in your plugin/etc. code
        with 'Dist::Zilla::Role::MetaCPANInterfacer';

        my $obj = $self->mcpan->fetch(...);

# DESCRIPTION

This role is simply gives you a MetaCPAN::API object to use with caching, so that other plugins can share that cache. It uses the awesome example provided in the "SYNOPSIS" in MetaCPAN::API, contributed by Kent Fredric.

# ATTRIBUTES

All of these attributes are f'ing lazy, because they like to sit around the house. They are also read-write, as this is a role, and you might want to change around the defaults.

## mcpan

- Type: A MetaCPAN::API object
- Default: A new object, using `mcpan_ua` as the Tiny user agent

## mcpan_ua

- Type: A HTTP::Tiny compatible user agent
- Default: A new HTTP::Tiny::Mech object, using `mcpan_mechua` as the Mechanized user agent

## mcpan_mechua

- Type: A WWW::Mechanize compatible user agent
- Default: A new WWW::Mechanize::Cached::GZip object, using `mcpan_cache` as the cache attribute, and some UA string changes.

## mcpan_cache

- Type: A caching object
- Default: A new CHI object, using the CHI::Driver::File driver pointing to `~/.dzil/.webcache`

# TODO

The caching stuff could potentially be split, but frankly, none of the existing plugins really need caching all that much. I've at least called the `.webcache` directory a generic name, so feel free to re-use it.

(Honestly, the only reason why this is a DZ module IS the caching directory name...)

# SEE ALSO

Dist::Zilla::PluginBundle::Prereqs, which uses this quite a bit.

# AVAILABILITY

The project homepage is https://github.com/SineSwiper/Dist-Zilla-Role-MetaCPANInterfacer/wiki.

The latest version of this module is available from the Comprehensive Perl Archive Network (CPAN). Visit http://www.perl.com/CPAN/ to find a CPAN site near you, or see https://metacpan.org/module/Dist::Zilla::Role::MetaCPANInterfacer/.

# SUPPORT

## Internet Relay Chat

You can get live help by using IRC ( Internet Relay Chat ). If you don't know what IRC is, please read this excellent guide: http://en.wikipedia.org/wiki/Internet_Relay_Chat. Please be courteous and patient when talking to us, as we might be busy or sleeping! You can join those networks/channels and get help:

- irc.perl.org

  You can connect to the server at 'irc.perl.org' and join this channel: #distzilla then talk to this person for help: SineSwiper.

## Bugs / Feature Requests

Please report any bugs or feature requests via https://github.com/SineSwiper/Dist-Zilla-Role-MetaCPANInterfacer/issues.

# AUTHOR

Brendan Byrd <BBYRD@CPAN.org>

# COPYRIGHT AND LICENSE

This software is Copyright (c) 2012 by Brendan Byrd.

This is free software, licensed under:

      The Artistic License 2.0 (GPL Compatible)