NAME

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

VERSION

version 1.0.2

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

FILTER METHODS

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.

TERMINATOR LIST METHODS

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.

MIRROR LIST METHODS

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.

FILTER METHODS

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->..

TERMINATOR LIST METHODS

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 LIST METHODS

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

PRIVATE ATTRIBUTES

_cache

_data

_xml

PRIVATE METHODS

_normalise_mirrorgroup

__build_mirrorgroup

_build_data

_build__xml

_filter

_unfilter

AUTHOR

Kent Fredric <kentnl@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2013 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.