CPAN-Search-Author

 view release on metacpan or  search on metacpan

META.json  view on Meta::CPAN

         }
      },
      "configure" : {
         "requires" : {
            "ExtUtils::MakeMaker" : "0"
         }
      },
      "runtime" : {
         "requires" : {
            "HTML::Entities" : "1.35",
            "HTTP::Request" : "1.40",
            "LWP::UserAgent" : "2.33",
            "perl" : "5.006"
         }
      }
   },
   "provides" : {
      "CPAN::Search::Author" : {
         "file" : "lib/CPAN/Search/Author.pm",
         "version" : "0.04"
      }

META.yml  view on Meta::CPAN

no_index:
  directory:
    - t
    - inc
provides:
  CPAN::Search::Author:
    file: lib/CPAN/Search/Author.pm
    version: '0.04'
requires:
  HTML::Entities: '1.35'
  HTTP::Request: '1.40'
  LWP::UserAgent: '2.33'
  perl: '5.006'
resources:
  repository: https://github.com/Manwar/CPAN-Search-Author.git
version: '0.04'

Makefile.PL  view on Meta::CPAN

    LICENSE            => 'artistic_2',
    PL_FILES           => {},
    MIN_PERL_VERSION   => 5.006,
    CONFIGURE_REQUIRES => {
        'ExtUtils::MakeMaker' => 0,
    },
    BUILD_REQUIRES   => {
        'Test::More' => 0,
    },
    PREREQ_PM => {
        'HTTP::Request'  => '1.40',
        'LWP::UserAgent' => '2.33',
        'HTML::Entities' => '1.35',
    },
    dist  => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
    clean => { FILES => 'CPAN-Search-Author-*' },
    (eval { ExtUtils::MakeMaker->VERSION(6.46) } ? (META_MERGE => {
        'meta-spec' => { version => 2 },
        provides    => {
            'CPAN::Search::Author' => { file => 'lib/CPAN/Search/Author.pm', version => '0.04' },
        },

lib/CPAN/Search/Author.pm  view on Meta::CPAN


Version 0.04

=cut

use 5.006;
use strict; use warnings;
use overload q("") => \&as_string, fallback => 1;

use Data::Dumper;
use HTTP::Request;
use LWP::UserAgent;
use HTML::Entities qw/decode_entities/;

our $DEBUG   = 0;

=head1 DESCRIPTION

CPAN::Search::Author is  an  attempt to provide  programmatical interface to CPAN
Search engine. CPAN Search is a search engine for the distributions,modules, docs,
and ID's on CPAN.  It was conceived  and  built by  Graham Barr  as a way to make

lib/CPAN/Search/Author.pm  view on Meta::CPAN


=cut

sub by_id
{
    my $self     = shift;
    my $id       = shift;

    my $browser  = $self->{_browser};
    $browser->env_proxy;
    my $request  = HTTP::Request->new(POST=>qq[http://search.cpan.org/search?query=$id&mode=author]);
    my $response = $browser->request($request);
    print {*STDOUT} "Search By Id [$id] Status: " . $response->status_line . "\n" if $DEBUG;
    die("ERROR: Couldn't connect to search.cpan.org.\n") unless $response->is_success;

    my $contents = $response->content;
    my @contents = split(/\n/,$contents);
    foreach (@contents) {
        chomp;
        s/^\s+//g;
        s/\s+$//g;

lib/CPAN/Search/Author.pm  view on Meta::CPAN


=cut

sub where_id_starts_with {
    my ($self, $letter) = @_;

    die("ERROR: Invalid letter [$letter].\n") unless ($letter =~ /[A-Z]/i);

    my $browser  = $self->{_browser};
    $browser->env_proxy;
    my $request  = HTTP::Request->new(POST=>qq[http://search.cpan.org/author/?$letter]);
    my $response = $browser->request($request);
    print {*STDOUT} "Search Id Starts With [$letter] Status: " . $response->status_line . "\n" if $DEBUG;
    die("ERROR: Couldn't connect to search.cpan.org.\n") unless $response->is_success;

    my $contents = $response->content;
    my @contents = split(/\n/,$contents);

    my @authors;
    foreach (@contents) {
        chomp;

lib/CPAN/Search/Author.pm  view on Meta::CPAN


    my $result = CPAN::Search::Author->new-search->where_name_contains('MAN');

=cut

sub where_name_contains {
    my ($self, $query) = @_;

    my $browser  = $self->{_browser};
    $browser->env_proxy;
    my $request  = HTTP::Request->new(POST=>qq[http://search.cpan.org/search?query=$query&mode=author]);
    my $response = $browser->request($request);
    print {*STDOUT} "Search By Name Contains [$query] Status: " . $response->status_line . "\n" if $DEBUG;
    die("ERROR: Couldn't connect to search.cpan.org.\n") unless $response->is_success;

    my $contents = $response->content;
    my @contents = split(/\n/,$contents);

    my $authors;
    foreach (@contents) {
        chomp;



( run in 0.291 second using v1.01-cache-2.11-cpan-de7293f3b23 )