NAME

MetaCPAN::API::Tiny - A Tiny API client for MetaCPAN

VERSION

version 1.131730

DESCRIPTION

This is the Tiny version of MetaCPAN::API. It implements a compatible API with a few notable exceptions:

Attributes are direct hash access

The attributes defined using Mo(o|u)se are now accessed via the blessed hash directly. There are no accessors defined to access this elements.

Exception handling

Instead of using Try::Tiny, raw evals are used. This could potentially cause issues, so just be aware.

Testing

Test::Fatal was replaced with an eval implementation of exception(). Test::TinyMocker usage is retained, but may be absorbed since it is pure perl

CLASS_METHODS

new

new is the constructor for MetaCPAN::API::Tiny. In the non-tiny version of this module, this is provided via Any::Moose built from the attributes defined. In the tiny version, we define our own constructor. It takes the same arguments and provides similar checks to MetaCPAN::API with regards to arguments passed.

PUBLIC_METHODS

source

my $source = $mcpan->source(
    author  => 'DOY',
    release => 'Moose-2.0201',
    path    => 'lib/Moose.pm',
);

Searches MetaCPAN for a module or a specific release and returns the plain source.

release

my $result = $mcpan->release( distribution => 'Moose' );

# or
my $result = $mcpan->release( author => 'DOY', release => 'Moose-2.0001' );

Searches MetaCPAN for a dist.

You can do complex searches using 'search' parameter:

# example lifted from MetaCPAN docs
my $result = $mcpan->release(
    search => {
        author => "OALDERS AND ",
        filter => "status:latest",
        fields => "name",
        size   => 1,
    },
);

pod

my $result = $mcpan->pod( module => 'Moose' );

# or
my $result = $mcpan->pod(
    author  => 'DOY',
    release => 'Moose-2.0201',
    path    => 'lib/Moose.pm',
);

Searches MetaCPAN for a module or a specific release and returns the POD.

module

my $result = $mcpan->module('MetaCPAN::API');

Searches MetaCPAN and returns a module's ".pm" file.

file

A synonym of "module"

author

my $result1 = $mcpan->author('XSAWYERX');
my $result2 = $mcpan->author( pauseid => 'XSAWYERX' );

Searches MetaCPAN for a specific author.

You can do complex searches using 'search' parameter:

# example lifted from MetaCPAN docs
my $result = $mcpan->author(
    search => {
        q    => 'profile.name:twitter',
        size => 1,
    },
);

fetch

my $result = $mcpan->fetch('/release/distribution/Moose');

# with parameters
my $more = $mcpan->fetch(
    '/release/distribution/Moose',
    param => 'value',
);

This is a helper method for API implementations. It fetches a path from MetaCPAN, decodes the JSON from the content variable and returns it.

You don't really need to use it, but you can in case you want to write your own extension implementation to MetaCPAN::API.

It accepts an additional hash as "GET" parameters.

post

# /release&content={"query":{"match_all":{}},"filter":{"prefix":{"archive":"Cache-Cache-1.06"}}}
my $result = $mcpan->post(
    'release',
    {   
        query  => { match_all => {} },
        filter => { prefix => { archive => 'Cache-Cache-1.06' } },
    },
);

The POST equivalent of the "fetch()" method. It gets the path and JSON request.

THANKS

Overall the tests and code were ripped directly from MetaCPAN::API and tiny-fied. A big thanks to Sawyer X for writing the original module.

AUTHOR

Nicholas R. Perez <nperez@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2013 by Nicholas R. Perez <nperez@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.