NAME

Gentoo::MirrorList - A programmatic way to access Gentoo.org Mirror Metadata

VERSION

version 0.01000102

SYNOPSIS

my @mirrors = Gentoo::MirrorList->region('North America')->country('CA')->ipv4->all;
my @mirrors = Gentoo::MirrorList->region('North America')->ipv4->random(3);
my $mirror = Gentoo::MirrorList->region('Australia')->ipv4->random();
my @all_names = Gentoo::MirrorList->mirrorname_list
my @australian_names = Gentoo::MirrorList->country('AU')->mirrorname_list;

DESCRIPTION

This module will download the most up-to-date copy of http://www.gentoo.org/main/en/mirrors3.xml and parse it into an array of Gentoo::MirrorList::Mirror which you can then filter down progressively using the methods defined below to find, via code, any mirror that meets a given criteria.

For efficiency, this module uses App::Cache to cache both the mirror list and the parsed representation of that list, and the data files are stored in ~/.gentoo_mirrorlist/cache/

METHODS

Explicit Filters.

All of the following self-filter the data set they are on.

my $x = Gentoo::MirrorList->FILTER
my $y = Gentoo::MirrorList->new()
my $z = $y->FILTER

x and y will be the same. y and z will be the same object.

country

..->country( 'AU' )->..
..->country( qr/AU/ )->..

See also "country_list"

countryname

..->countryname( 'Australia' )->..
..->countryname( qr/Aus/ )->..

See also "countryname_list"

region

..->region('North America')->..
..->region(qr/America/)->..

See also "region_list"

mirrorname

..->mirrorname(qr/^a/i)->..

See also "mirrorname_list"

uri

..->uri(qr/gentoo/)->..

See also "uri_list"

proto

..->proto('http')->..
..->proto(qr/^.*tp$/)->..

See also "proto_list"

ipv4

..->ipv4( 1 )->..
..->ipv4( 0 )->..

ipv6

..->ipv6( 1 )->..
..->ipv6( 0 )->..

partial

..->partial( 1 )->..
..->partial( 0 )->..

exclude_country

..->exclude_country(qr/^K/i)->..
..->exclude_country('AU')->..

See also "country_list"

exclude_countryname

..->exclude_countryname(qr/America/i)->..
..->exclude_countryname('Australia')->..

See also "countryname_list"

exclude_region

..->exclude_region(qr/Foo/)->..
..->exclude_region('Foo')->..

See also "region_list"

exclude_mirrorname

..->exclude_mirrorname(qr/Bad/)->..
..->exclude_mirrorname('Bad')->..

See also "mirrorname_list"

exclude_uri

..->exclude_uri(qr/Bad\.ip/)->..
..->exclude_uri('Bad.ip')->..

See also "uri_list"

exclude_proto

..->exclude_proto(qr/sync/)->..
..->exclude_proto('rsync')->..

See also "proto_list"

is_ipv4

..->is_ipv4->..

not_ipv4

..->not_ipv4->..

is_ipv6

..->is_ipv6->..

not_ipv6

..->not_ipv6->..

is_partial

..->is_partial->..

not_partial

..->not_partial->..

Terminating List

If called directly on Gentoo::MirrorList will return all data possible.

If called on an object that has been filtered, only shows the data that is applicable.

country_list

my ( @foo ) = ...->country_list

countryname_list

my ( @foo ) = ...->countryname_list

region_list

my ( @foo ) = ...->region_list

mirrorname_list

my ( @foo ) = ...->mirrorname_list

uri_list

my ( @foo ) = ...->uri_list

proto_list

my ( @foo ) = ...->proto_list

Mirror Selectors

The following methods will return one or more Gentoo::MirrorList::Mirror objects,

They can be called directly on Gentoo::MirrorList or on filtered objects.

On filtered objects, the filtration that has been performed affects the output.

random

my ( $mirror )  = ...->random()
my ( @mirrors ) = ...->random( 10 );

all

returns all Mirrors in the current filtration.

There is no explicit sort order, but it will likely resemble parse order

AUTHOR

Kent Fredric <kentnl@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2009 by Kent Fredric.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.