Why not adopt me?
NAME
Gentoo::MirrorList - A programmatic way to access Gentoo.org Mirror Metadata
VERSION
version 0.01000101
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.