summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaren Etheridge <ether@cpan.org>2016-11-12 13:37:38 -0800
committerKaren Etheridge <ether@cpan.org>2016-11-18 15:47:37 -0800
commit211c054ca8bc372517e6da660a9a03c3c89da121 (patch)
tree5f3d96ca85ea538b830038e86070a5d6365839c7
parente58e37a413221bc9f2db1aa82f2116fbf465af4d (diff)
downloaduri-topic/dzil_ether.tar.gz
convert to Dist::Zilla, unifying all $VERSIONstopic/dzil_ether
-rw-r--r--.gitignore1
-rw-r--r--.travis.yml12
-rw-r--r--Changes4
-rw-r--r--MANIFEST108
-rw-r--r--MANIFEST.SKIP11
-rw-r--r--Makefile.PL139
-rw-r--r--README667
-rw-r--r--dist.ini272
-rw-r--r--t/distmanifest.t11
9 files changed, 281 insertions, 944 deletions
diff --git a/.gitignore b/.gitignore
index fde46f4..87fe823 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,4 @@
/URI-*/
/URI-*.tar.gz
/todo.txt
+/.build/
diff --git a/.travis.yml b/.travis.yml
index 4f0be86..910a41c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -8,12 +8,8 @@ perl:
- "5.14"
- "5.12"
- "5.10"
-before_install:
- - git clone git://github.com/travis-perl/helpers ~/travis-perl-helpers
- - source ~/travis-perl-helpers/init
- - build-perl
- - perl -V
- - cpanm Test::DistManifest
- - build-dist
+install:
+ - dzil authordeps --missing | cpanm || { cat ~/.cpanm/build.log ; false ; }
+ - dzil listdeps --author --missing | cpanm || { cat ~/.cpanm/build.log ; false ; }
script:
- - make test
+ - HARNESS_OPTIONS=j9:c dzil test --author
diff --git a/Changes b/Changes
index 764de9d..e9cdc4b 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,9 @@
Revision history for URI
+{{$NEXT}}
+ - converted distribution packaging to Dist::Zilla, and unified all package
+ $VERSIONs
+
2016-01-08 Karen Etheridge <ether@cpan.org>
Release 1.71
diff --git a/MANIFEST b/MANIFEST
deleted file mode 100644
index dd65819..0000000
--- a/MANIFEST
+++ /dev/null
@@ -1,108 +0,0 @@
-Changes
-lib/URI.pm
-lib/URI/_foreign.pm
-lib/URI/_generic.pm
-lib/URI/_idna.pm
-lib/URI/_ldap.pm
-lib/URI/_login.pm
-lib/URI/_punycode.pm
-lib/URI/_query.pm
-lib/URI/_segment.pm
-lib/URI/_server.pm
-lib/URI/_userpass.pm
-lib/URI/data.pm
-lib/URI/Escape.pm
-lib/URI/file.pm
-lib/URI/file/Base.pm
-lib/URI/file/FAT.pm
-lib/URI/file/Mac.pm
-lib/URI/file/OS2.pm
-lib/URI/file/QNX.pm
-lib/URI/file/Unix.pm
-lib/URI/file/Win32.pm
-lib/URI/ftp.pm
-lib/URI/gopher.pm
-lib/URI/Heuristic.pm
-lib/URI/http.pm
-lib/URI/https.pm
-lib/URI/IRI.pm
-lib/URI/ldap.pm
-lib/URI/ldapi.pm
-lib/URI/ldaps.pm
-lib/URI/mailto.pm
-lib/URI/mms.pm
-lib/URI/news.pm
-lib/URI/nntp.pm
-lib/URI/pop.pm
-lib/URI/QueryParam.pm
-lib/URI/rlogin.pm
-lib/URI/rsync.pm
-lib/URI/rtsp.pm
-lib/URI/rtspu.pm
-lib/URI/sftp.pm
-lib/URI/sip.pm
-lib/URI/sips.pm
-lib/URI/snews.pm
-lib/URI/Split.pm
-lib/URI/ssh.pm
-lib/URI/telnet.pm
-lib/URI/tn3270.pm
-lib/URI/URL.pm
-lib/URI/urn.pm
-lib/URI/urn/isbn.pm
-lib/URI/urn/oid.pm
-lib/URI/WithBase.pm
-LICENSE
-Makefile.PL
-MANIFEST
-README
-t/abs.t
-t/clone.t
-t/cwd.t
-t/data.t
-t/distmanifest.t
-t/escape-char.t
-t/escape.t
-t/file.t
-t/ftp.t
-t/generic.t
-t/gopher.t
-t/heuristic.t
-t/http.t
-t/idna.t
-t/iri.t
-t/ldap.t
-t/mailto.t
-t/mix.t
-t/mms.t
-t/news.t
-t/num_eq.t
-t/old-absconf.t
-t/old-base.t
-t/old-file.t
-t/old-relbase.t
-t/path-segments.t
-t/pop.t
-t/punycode.t
-t/query-param.t
-t/query.t
-t/rel.t
-t/rfc2732.t
-t/roy-test.t
-t/roytest1.html
-t/roytest2.html
-t/roytest3.html
-t/roytest4.html
-t/roytest5.html
-t/rsync.t
-t/rtsp.t
-t/scheme-exceptions.t
-t/sip.t
-t/sort-hash-query-form.t
-t/split.t
-t/storable-test.pl
-t/storable.t
-t/urn-isbn.t
-t/urn-oid.t
-t/utf8.t
-uri-test
diff --git a/MANIFEST.SKIP b/MANIFEST.SKIP
deleted file mode 100644
index 712e38e..0000000
--- a/MANIFEST.SKIP
+++ /dev/null
@@ -1,11 +0,0 @@
-#!include_default
-\.tar\.gz$
-^draft-.*\.txt$
-^rfc\d+\.txt$
-\.old/
-\.tgz/
-^MANIFEST.SKIP$
-^\.ackrc$
-^URI-\d
-^.mailmap$
-^.travis.yml$
diff --git a/Makefile.PL b/Makefile.PL
deleted file mode 100644
index 3043c06..0000000
--- a/Makefile.PL
+++ /dev/null
@@ -1,139 +0,0 @@
-use strict;
-use warnings;
-require 5.008001;
-use utf8;
-use ExtUtils::MakeMaker;
-
-my $developer = -f '.gitignore';
-ExtUtils::MakeMaker->VERSION(6.98) if $developer;
-
-my %WriteMakefileArgs = (
- NAME => 'URI',
- VERSION_FROM => 'lib/URI.pm',
- ABSTRACT_FROM => 'lib/URI.pm',
- AUTHOR => 'Gisle Aas <gisle@activestate.com>',
- LICENSE => 'perl_5',
-
- META_MERGE => {
- 'meta-spec' => { version => 2 },
- dynamic_config => 0,
- resources => {
- repository => {
- url => 'https://github.com/libwww-perl/uri.git',
- web => 'https://github.com/libwww-perl/uri',
- type => 'git',
- },
- bugtracker => {
- mailto => 'bug-URI@rt.cpan.org',
- web => 'https://rt.cpan.org/Public/Dist/Display.html?Name=URI',
- },
- x_MailingList => 'mailto:libwww@perl.org',
- x_IRC => 'irc://irc.perl.org/#lwp',
- },
- x_authority => 'cpan:GAAS',
- x_contributors => [ # manually added, from git shortlog -e -s -n
- 'Gisle Aas <gisle@aas.no>',
- 'Karen Etheridge <ether@cpan.org>',
- 'Ville Skyttä <ville.skytta@iki.fi>',
- 'Mark Stosberg <mark@stosberg.com>',
- 'Michael G. Schwern <schwern@pobox.com>',
- 'Olaf Alders <olaf@wundersolutions.com>',
- 'Slaven Rezic <slaven@rezic.de>',
- 'Matt Lawrence <matthewlawrence@venda.com>',
- 'Peter Rabbitson <ribasushi@cpan.org>',
- 'Piotr Roszatycki <piotr.roszatycki@gmail.com>',
- 'Salvatore Bonaccorso <carnil@launchpad.net>',
- 'Tatsuhiko Miyagawa <miyagawa@bulknews.net>',
- 'Torsten Förtsch <torsten.foertsch@gmx.net>',
- 'Adam Herzog <adam@adamherzog.com>',
- 'gerard <gerard@tty.nl>',
- 'Alex Kapranoff <kapranoff@gmail.com>',
- 'Brendan Byrd <Perl@ResonatorSoft.org>',
- 'David Schmidt <davewood@gmx.at>',
- 'Jan Dubois <jand@activestate.com>',
- 'John Miller <john@rimmkaufman.com>',
- 'Kenichi Ishigaki <ishigaki@cpan.org>',
- 'Kent Fredric <kentfredric@gmail.com>',
- 'Masahiro Honma <hiratara@cpan.org>',
- ],
- },
-
- META_ADD => {
- prereqs => {
- configure => {
- requires => {
- 'ExtUtils::MakeMaker' => '0',
- },
- },
- runtime => {
- requires => {
- 'MIME::Base64' => '2',
- 'parent' => '0',
- 'Exporter' => '5.57',
- 'utf8' => '0',
- 'Scalar::Util' => '0',
- 'perl' => '5.008001',
- },
- recommends => {
- 'Business::ISBN' => '0',
- },
- },
- test => {
- requires => {
- 'Test::More' => '0.96',
- 'File::Temp' => '0',
- 'Test::Needs' => '0',
- },
- },
- },
- },
-);
-
-my $eumm_version = eval $ExtUtils::MakeMaker::VERSION;
-
-for (qw(configure build test runtime)) {
- my $key = $_ eq 'runtime' ? 'PREREQ_PM' : uc $_.'_REQUIRES';
- next unless exists $WriteMakefileArgs{META_ADD}{prereqs}{$_}
- or exists $WriteMakefileArgs{$key};
- my $r = $WriteMakefileArgs{$key} = {
- %{$WriteMakefileArgs{META_ADD}{prereqs}{$_}{requires} || {}},
- %{delete $WriteMakefileArgs{$key} || {}},
- };
- defined $r->{$_} or delete $r->{$_} for keys %$r;
-}
-
-# dynamic prereqs get added here.
-
-$WriteMakefileArgs{MIN_PERL_VERSION} = delete $WriteMakefileArgs{PREREQ_PM}{perl} || 0;
-
-die 'attention developer: you need to do a sane meta merge here!'
- if keys %{$WriteMakefileArgs{BUILD_REQUIRES}};
-
-$WriteMakefileArgs{BUILD_REQUIRES} = {
- %{$WriteMakefileArgs{BUILD_REQUIRES} || {}},
- %{delete $WriteMakefileArgs{TEST_REQUIRES}}
-} if $eumm_version < 6.63_03;
-
-$WriteMakefileArgs{PREREQ_PM} = {
- %{$WriteMakefileArgs{PREREQ_PM}},
- %{delete $WriteMakefileArgs{BUILD_REQUIRES}}
-} if $eumm_version < 6.55_01;
-
-delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
- if $eumm_version < 6.51_03;
-
-delete $WriteMakefileArgs{MIN_PERL_VERSION}
- if $eumm_version < 6.48;
-
-delete @WriteMakefileArgs{qw(META_ADD META_MERGE)}
- if $eumm_version < 6.46;
-
-delete $WriteMakefileArgs{LICENSE}
- if $eumm_version < 6.31;
-
-WriteMakefile(%WriteMakefileArgs);
-
-# pod2text is in https://metacpan.org/release/podlators
-system("pod2text $WriteMakefileArgs{VERSION_FROM} > README")
- if $developer
- and (not -e 'README' or (stat('README'))[9] < (stat($WriteMakefileArgs{VERSION_FROM}))[9]);
diff --git a/README b/README
deleted file mode 100644
index 09a8023..0000000
--- a/README
+++ /dev/null
@@ -1,667 +0,0 @@
-NAME
- URI - Uniform Resource Identifiers (absolute and relative)
-
-SYNOPSIS
- $u1 = URI->new("http://www.perl.com");
- $u2 = URI->new("foo", "http");
- $u3 = $u2->abs($u1);
- $u4 = $u3->clone;
- $u5 = URI->new("HTTP://WWW.perl.com:80")->canonical;
-
- $str = $u->as_string;
- $str = "$u";
-
- $scheme = $u->scheme;
- $opaque = $u->opaque;
- $path = $u->path;
- $frag = $u->fragment;
-
- $u->scheme("ftp");
- $u->host("ftp.perl.com");
- $u->path("cpan/");
-
-DESCRIPTION
- This module implements the "URI" class. Objects of this class represent
- "Uniform Resource Identifier references" as specified in RFC 2396 (and
- updated by RFC 2732).
-
- A Uniform Resource Identifier is a compact string of characters that
- identifies an abstract or physical resource. A Uniform Resource
- Identifier can be further classified as either a Uniform Resource
- Locator (URL) or a Uniform Resource Name (URN). The distinction between
- URL and URN does not matter to the "URI" class interface. A
- "URI-reference" is a URI that may have additional information attached
- in the form of a fragment identifier.
-
- An absolute URI reference consists of three parts: a *scheme*, a
- *scheme-specific part* and a *fragment* identifier. A subset of URI
- references share a common syntax for hierarchical namespaces. For these,
- the scheme-specific part is further broken down into *authority*, *path*
- and *query* components. These URIs can also take the form of relative
- URI references, where the scheme (and usually also the authority)
- component is missing, but implied by the context of the URI reference.
- The three forms of URI reference syntax are summarized as follows:
-
- <scheme>:<scheme-specific-part>#<fragment>
- <scheme>://<authority><path>?<query>#<fragment>
- <path>?<query>#<fragment>
-
- The components into which a URI reference can be divided depend on the
- *scheme*. The "URI" class provides methods to get and set the individual
- components. The methods available for a specific "URI" object depend on
- the scheme.
-
-CONSTRUCTORS
- The following methods construct new "URI" objects:
-
- $uri = URI->new( $str )
- $uri = URI->new( $str, $scheme )
- Constructs a new URI object. The string representation of a URI is
- given as argument, together with an optional scheme specification.
- Common URI wrappers like "" and <>, as well as leading and trailing
- white space, are automatically removed from the $str argument before
- it is processed further.
-
- The constructor determines the scheme, maps this to an appropriate
- URI subclass, constructs a new object of that class and returns it.
-
- If the scheme isn't one of those that URI recognizes, you still get
- an URI object back that you can access the generic methods on. The
- "$uri->has_recognized_scheme" method can be used to test for this.
-
- The $scheme argument is only used when $str is a relative URI. It
- can be either a simple string that denotes the scheme, a string
- containing an absolute URI reference, or an absolute "URI" object.
- If no $scheme is specified for a relative URI $str, then $str is
- simply treated as a generic URI (no scheme-specific methods
- available).
-
- The set of characters available for building URI references is
- restricted (see URI::Escape). Characters outside this set are
- automatically escaped by the URI constructor.
-
- $uri = URI->new_abs( $str, $base_uri )
- Constructs a new absolute URI object. The $str argument can denote a
- relative or absolute URI. If relative, then it is absolutized using
- $base_uri as base. The $base_uri must be an absolute URI.
-
- $uri = URI::file->new( $filename )
- $uri = URI::file->new( $filename, $os )
- Constructs a new *file* URI from a file name. See URI::file.
-
- $uri = URI::file->new_abs( $filename )
- $uri = URI::file->new_abs( $filename, $os )
- Constructs a new absolute *file* URI from a file name. See
- URI::file.
-
- $uri = URI::file->cwd
- Returns the current working directory as a *file* URI. See
- URI::file.
-
- $uri->clone
- Returns a copy of the $uri.
-
-COMMON METHODS
- The methods described in this section are available for all "URI"
- objects.
-
- Methods that give access to components of a URI always return the old
- value of the component. The value returned is "undef" if the component
- was not present. There is generally a difference between a component
- that is empty (represented as "") and a component that is missing
- (represented as "undef"). If an accessor method is given an argument, it
- updates the corresponding component in addition to returning the old
- value of the component. Passing an undefined argument removes the
- component (if possible). The description of each accessor method
- indicates whether the component is passed as an escaped
- (percent-encoded) or an unescaped string. A component that can be
- further divided into sub-parts are usually passed escaped, as unescaping
- might change its semantics.
-
- The common methods available for all URI are:
-
- $uri->scheme
- $uri->scheme( $new_scheme )
- Sets and returns the scheme part of the $uri. If the $uri is
- relative, then $uri->scheme returns "undef". If called with an
- argument, it updates the scheme of $uri, possibly changing the class
- of $uri, and returns the old scheme value. The method croaks if the
- new scheme name is illegal; a scheme name must begin with a letter
- and must consist of only US-ASCII letters, numbers, and a few
- special marks: ".", "+", "-". This restriction effectively means
- that the scheme must be passed unescaped. Passing an undefined
- argument to the scheme method makes the URI relative (if possible).
-
- Letter case does not matter for scheme names. The string returned by
- $uri->scheme is always lowercase. If you want the scheme just as it
- was written in the URI in its original case, you can use the
- $uri->_scheme method instead.
-
- $uri->has_recognized_scheme
- Returns TRUE if the URI scheme is one that URI recognizes.
-
- It will also be TRUE for relative URLs where a recognized scheme was
- provided to the constructor, even if "$uri->scheme" returns "undef"
- for these.
-
- $uri->opaque
- $uri->opaque( $new_opaque )
- Sets and returns the scheme-specific part of the $uri (everything
- between the scheme and the fragment) as an escaped string.
-
- $uri->path
- $uri->path( $new_path )
- Sets and returns the same value as $uri->opaque unless the URI
- supports the generic syntax for hierarchical namespaces. In that
- case the generic method is overridden to set and return the part of
- the URI between the *host name* and the *fragment*.
-
- $uri->fragment
- $uri->fragment( $new_frag )
- Returns the fragment identifier of a URI reference as an escaped
- string.
-
- $uri->as_string
- Returns a URI object to a plain ASCII string. URI objects are also
- converted to plain strings automatically by overloading. This means
- that $uri objects can be used as plain strings in most Perl
- constructs.
-
- $uri->as_iri
- Returns a Unicode string representing the URI. Escaped UTF-8
- sequences representing non-ASCII characters are turned into their
- corresponding Unicode code point.
-
- $uri->canonical
- Returns a normalized version of the URI. The rules for normalization
- are scheme-dependent. They usually involve lowercasing the scheme
- and Internet host name components, removing the explicit port
- specification if it matches the default port, uppercasing all escape
- sequences, and unescaping octets that can be better represented as
- plain characters.
-
- For efficiency reasons, if the $uri is already in normalized form,
- then a reference to it is returned instead of a copy.
-
- $uri->eq( $other_uri )
- URI::eq( $first_uri, $other_uri )
- Tests whether two URI references are equal. URI references that
- normalize to the same string are considered equal. The method can
- also be used as a plain function which can also test two string
- arguments.
-
- If you need to test whether two "URI" object references denote the
- same object, use the '==' operator.
-
- $uri->abs( $base_uri )
- Returns an absolute URI reference. If $uri is already absolute, then
- a reference to it is simply returned. If the $uri is relative, then
- a new absolute URI is constructed by combining the $uri and the
- $base_uri, and returned.
-
- $uri->rel( $base_uri )
- Returns a relative URI reference if it is possible to make one that
- denotes the same resource relative to $base_uri. If not, then $uri
- is simply returned.
-
- $uri->secure
- Returns a TRUE value if the URI is considered to point to a resource
- on a secure channel, such as an SSL or TLS encrypted one.
-
-GENERIC METHODS
- The following methods are available to schemes that use the
- common/generic syntax for hierarchical namespaces. The descriptions of
- schemes below indicate which these are. Unrecognized schemes are assumed
- to support the generic syntax, and therefore the following methods:
-
- $uri->authority
- $uri->authority( $new_authority )
- Sets and returns the escaped authority component of the $uri.
-
- $uri->path
- $uri->path( $new_path )
- Sets and returns the escaped path component of the $uri (the part
- between the host name and the query or fragment). The path can never
- be undefined, but it can be the empty string.
-
- $uri->path_query
- $uri->path_query( $new_path_query )
- Sets and returns the escaped path and query components as a single
- entity. The path and the query are separated by a "?" character, but
- the query can itself contain "?".
-
- $uri->path_segments
- $uri->path_segments( $segment, ... )
- Sets and returns the path. In a scalar context, it returns the same
- value as $uri->path. In a list context, it returns the unescaped
- path segments that make up the path. Path segments that have
- parameters are returned as an anonymous array. The first element is
- the unescaped path segment proper; subsequent elements are escaped
- parameter strings. Such an anonymous array uses overloading so it
- can be treated as a string too, but this string does not include the
- parameters.
-
- Note that absolute paths have the empty string as their first
- *path_segment*, i.e. the *path* "/foo/bar" have 3 *path_segments*;
- "", "foo" and "bar".
-
- $uri->query
- $uri->query( $new_query )
- Sets and returns the escaped query component of the $uri.
-
- $uri->query_form
- $uri->query_form( $key1 => $val1, $key2 => $val2, ... )
- $uri->query_form( $key1 => $val1, $key2 => $val2, ..., $delim )
- $uri->query_form( \@key_value_pairs )
- $uri->query_form( \@key_value_pairs, $delim )
- $uri->query_form( \%hash )
- $uri->query_form( \%hash, $delim )
- Sets and returns query components that use the
- *application/x-www-form-urlencoded* format. Key/value pairs are
- separated by "&", and the key is separated from the value by a "="
- character.
-
- The form can be set either by passing separate key/value pairs, or
- via an array or hash reference. Passing an empty array or an empty
- hash removes the query component, whereas passing no arguments at
- all leaves the component unchanged. The order of keys is undefined
- if a hash reference is passed. The old value is always returned as a
- list of separate key/value pairs. Assigning this list to a hash is
- unwise as the keys returned might repeat.
-
- The values passed when setting the form can be plain strings or
- references to arrays of strings. Passing an array of values has the
- same effect as passing the key repeatedly with one value at a time.
- All the following statements have the same effect:
-
- $uri->query_form(foo => 1, foo => 2);
- $uri->query_form(foo => [1, 2]);
- $uri->query_form([ foo => 1, foo => 2 ]);
- $uri->query_form([ foo => [1, 2] ]);
- $uri->query_form({ foo => [1, 2] });
-
- The $delim parameter can be passed as ";" to force the key/value
- pairs to be delimited by ";" instead of "&" in the query string.
- This practice is often recommended for URLs embedded in HTML or XML
- documents as this avoids the trouble of escaping the "&" character.
- You might also set the $URI::DEFAULT_QUERY_FORM_DELIMITER variable
- to ";" for the same global effect.
-
- The "URI::QueryParam" module can be loaded to add further methods to
- manipulate the form of a URI. See URI::QueryParam for details.
-
- $uri->query_keywords
- $uri->query_keywords( $keywords, ... )
- $uri->query_keywords( \@keywords )
- Sets and returns query components that use the keywords separated by
- "+" format.
-
- The keywords can be set either by passing separate keywords directly
- or by passing a reference to an array of keywords. Passing an empty
- array removes the query component, whereas passing no arguments at
- all leaves the component unchanged. The old value is always returned
- as a list of separate words.
-
-SERVER METHODS
- For schemes where the *authority* component denotes an Internet host,
- the following methods are available in addition to the generic methods.
-
- $uri->userinfo
- $uri->userinfo( $new_userinfo )
- Sets and returns the escaped userinfo part of the authority
- component.
-
- For some schemes this is a user name and a password separated by a
- colon. This practice is not recommended. Embedding passwords in
- clear text (such as URI) has proven to be a security risk in almost
- every case where it has been used.
-
- $uri->host
- $uri->host( $new_host )
- Sets and returns the unescaped hostname.
-
- If the $new_host string ends with a colon and a number, then this
- number also sets the port.
-
- For IPv6 addresses the brackets around the raw address is removed in
- the return value from $uri->host. When setting the host attribute to
- an IPv6 address you can use a raw address or one enclosed in
- brackets. The address needs to be enclosed in brackets if you want
- to pass in a new port value as well.
-
- $uri->ihost
- Returns the host in Unicode form. Any IDNA A-labels are turned into
- U-labels.
-
- $uri->port
- $uri->port( $new_port )
- Sets and returns the port. The port is a simple integer that should
- be greater than 0.
-
- If a port is not specified explicitly in the URI, then the URI
- scheme's default port is returned. If you don't want the default
- port substituted, then you can use the $uri->_port method instead.
-
- $uri->host_port
- $uri->host_port( $new_host_port )
- Sets and returns the host and port as a single unit. The returned
- value includes a port, even if it matches the default port. The host
- part and the port part are separated by a colon: ":".
-
- For IPv6 addresses the bracketing is preserved; thus
- URI->new("http://[::1]/")->host_port returns "[::1]:80". Contrast
- this with $uri->host which will remove the brackets.
-
- $uri->default_port
- Returns the default port of the URI scheme to which $uri belongs.
- For *http* this is the number 80, for *ftp* this is the number 21,
- etc. The default port for a scheme can not be changed.
-
-SCHEME-SPECIFIC SUPPORT
- Scheme-specific support is provided for the following URI schemes. For
- "URI" objects that do not belong to one of these, you can only use the
- common and generic methods.
-
- data:
- The *data* URI scheme is specified in RFC 2397. It allows inclusion
- of small data items as "immediate" data, as if it had been included
- externally.
-
- "URI" objects belonging to the data scheme support the common
- methods and two new methods to access their scheme-specific
- components: $uri->media_type and $uri->data. See URI::data for
- details.
-
- file:
- An old specification of the *file* URI scheme is found in RFC 1738.
- A new RFC 2396 based specification in not available yet, but file
- URI references are in common use.
-
- "URI" objects belonging to the file scheme support the common and
- generic methods. In addition, they provide two methods for mapping
- file URIs back to local file names; $uri->file and $uri->dir. See
- URI::file for details.
-
- ftp:
- An old specification of the *ftp* URI scheme is found in RFC 1738. A
- new RFC 2396 based specification in not available yet, but ftp URI
- references are in common use.
-
- "URI" objects belonging to the ftp scheme support the common,
- generic and server methods. In addition, they provide two methods
- for accessing the userinfo sub-components: $uri->user and
- $uri->password.
-
- gopher:
- The *gopher* URI scheme is specified in
- <draft-murali-url-gopher-1996-12-04> and will hopefully be available
- as a RFC 2396 based specification.
-
- "URI" objects belonging to the gopher scheme support the common,
- generic and server methods. In addition, they support some methods
- for accessing gopher-specific path components: $uri->gopher_type,
- $uri->selector, $uri->search, $uri->string.
-
- http:
- The *http* URI scheme is specified in RFC 2616. The scheme is used
- to reference resources hosted by HTTP servers.
-
- "URI" objects belonging to the http scheme support the common,
- generic and server methods.
-
- https:
- The *https* URI scheme is a Netscape invention which is commonly
- implemented. The scheme is used to reference HTTP servers through
- SSL connections. Its syntax is the same as http, but the default
- port is different.
-
- ldap:
- The *ldap* URI scheme is specified in RFC 2255. LDAP is the
- Lightweight Directory Access Protocol. An ldap URI describes an LDAP
- search operation to perform to retrieve information from an LDAP
- directory.
-
- "URI" objects belonging to the ldap scheme support the common,
- generic and server methods as well as ldap-specific methods:
- $uri->dn, $uri->attributes, $uri->scope, $uri->filter,
- $uri->extensions. See URI::ldap for details.
-
- ldapi:
- Like the *ldap* URI scheme, but uses a UNIX domain socket. The
- server methods are not supported, and the local socket path is
- available as $uri->un_path. The *ldapi* scheme is used by the
- OpenLDAP package. There is no real specification for it, but it is
- mentioned in various OpenLDAP manual pages.
-
- ldaps:
- Like the *ldap* URI scheme, but uses an SSL connection. This scheme
- is deprecated, as the preferred way is to use the *start_tls*
- mechanism.
-
- mailto:
- The *mailto* URI scheme is specified in RFC 2368. The scheme was
- originally used to designate the Internet mailing address of an
- individual or service. It has (in RFC 2368) been extended to allow
- setting of other mail header fields and the message body.
-
- "URI" objects belonging to the mailto scheme support the common
- methods and the generic query methods. In addition, they support the
- following mailto-specific methods: $uri->to, $uri->headers.
-
- Note that the "foo@example.com" part of a mailto is *not* the
- "userinfo" and "host" but instead the "path". This allows a mailto
- URI to contain multiple comma separated email addresses.
-
- mms:
- The *mms* URL specification can be found at <http://sdp.ppona.com/>.
- "URI" objects belonging to the mms scheme support the common,
- generic, and server methods, with the exception of userinfo and
- query-related sub-components.
-
- news:
- The *news*, *nntp* and *snews* URI schemes are specified in
- <draft-gilman-news-url-01> and will hopefully be available as an RFC
- 2396 based specification soon.
-
- "URI" objects belonging to the news scheme support the common,
- generic and server methods. In addition, they provide some methods
- to access the path: $uri->group and $uri->message.
-
- nntp:
- See *news* scheme.
-
- pop:
- The *pop* URI scheme is specified in RFC 2384. The scheme is used to
- reference a POP3 mailbox.
-
- "URI" objects belonging to the pop scheme support the common,
- generic and server methods. In addition, they provide two methods to
- access the userinfo components: $uri->user and $uri->auth
-
- rlogin:
- An old specification of the *rlogin* URI scheme is found in RFC
- 1738. "URI" objects belonging to the rlogin scheme support the
- common, generic and server methods.
-
- rtsp:
- The *rtsp* URL specification can be found in section 3.2 of RFC
- 2326. "URI" objects belonging to the rtsp scheme support the common,
- generic, and server methods, with the exception of userinfo and
- query-related sub-components.
-
- rtspu:
- The *rtspu* URI scheme is used to talk to RTSP servers over UDP
- instead of TCP. The syntax is the same as rtsp.
-
- rsync:
- Information about rsync is available from <http://rsync.samba.org/>.
- "URI" objects belonging to the rsync scheme support the common,
- generic and server methods. In addition, they provide methods to
- access the userinfo sub-components: $uri->user and $uri->password.
-
- sip:
- The *sip* URI specification is described in sections 19.1 and 25 of
- RFC 3261. "URI" objects belonging to the sip scheme support the
- common, generic, and server methods with the exception of path
- related sub-components. In addition, they provide two methods to get
- and set *sip* parameters: $uri->params_form and $uri->params.
-
- sips:
- See *sip* scheme. Its syntax is the same as sip, but the default
- port is different.
-
- snews:
- See *news* scheme. Its syntax is the same as news, but the default
- port is different.
-
- telnet:
- An old specification of the *telnet* URI scheme is found in RFC
- 1738. "URI" objects belonging to the telnet scheme support the
- common, generic and server methods.
-
- tn3270:
- These URIs are used like *telnet* URIs but for connections to IBM
- mainframes. "URI" objects belonging to the tn3270 scheme support the
- common, generic and server methods.
-
- ssh:
- Information about ssh is available at <http://www.openssh.com/>.
- "URI" objects belonging to the ssh scheme support the common,
- generic and server methods. In addition, they provide methods to
- access the userinfo sub-components: $uri->user and $uri->password.
-
- sftp:
- "URI" objects belonging to the sftp scheme support the common,
- generic and server methods. In addition, they provide methods to
- access the userinfo sub-components: $uri->user and $uri->password.
-
- urn:
- The syntax of Uniform Resource Names is specified in RFC 2141. "URI"
- objects belonging to the urn scheme provide the common methods, and
- also the methods $uri->nid and $uri->nss, which return the Namespace
- Identifier and the Namespace-Specific String respectively.
-
- The Namespace Identifier basically works like the Scheme identifier
- of URIs, and further divides the URN namespace. Namespace Identifier
- assignments are maintained at
- <http://www.iana.org/assignments/urn-namespaces>.
-
- Letter case is not significant for the Namespace Identifier. It is
- always returned in lower case by the $uri->nid method. The
- $uri->_nid method can be used if you want it in its original case.
-
- urn:isbn:
- The "urn:isbn:" namespace contains International Standard Book
- Numbers (ISBNs) and is described in RFC 3187. A "URI" object
- belonging to this namespace has the following extra methods (if the
- Business::ISBN module is available): $uri->isbn,
- $uri->isbn_publisher_code, $uri->isbn_group_code (formerly
- isbn_country_code, which is still supported by issues a deprecation
- warning), $uri->isbn_as_ean.
-
- urn:oid:
- The "urn:oid:" namespace contains Object Identifiers (OIDs) and is
- described in RFC 3061. An object identifier consists of sequences of
- digits separated by dots. A "URI" object belonging to this namespace
- has an additional method called $uri->oid that can be used to
- get/set the oid value. In a list context, oid numbers are returned
- as separate elements.
-
-CONFIGURATION VARIABLES
- The following configuration variables influence how the class and its
- methods behave:
-
- $URI::ABS_ALLOW_RELATIVE_SCHEME
- Some older parsers used to allow the scheme name to be present in
- the relative URL if it was the same as the base URL scheme. RFC 2396
- says that this should be avoided, but you can enable this old
- behaviour by setting the $URI::ABS_ALLOW_RELATIVE_SCHEME variable to
- a TRUE value. The difference is demonstrated by the following
- examples:
-
- URI->new("http:foo")->abs("http://host/a/b")
- ==> "http:foo"
-
- local $URI::ABS_ALLOW_RELATIVE_SCHEME = 1;
- URI->new("http:foo")->abs("http://host/a/b")
- ==> "http:/host/a/foo"
-
- $URI::ABS_REMOTE_LEADING_DOTS
- You can also have the abs() method ignore excess ".." segments in
- the relative URI by setting $URI::ABS_REMOTE_LEADING_DOTS to a TRUE
- value. The difference is demonstrated by the following examples:
-
- URI->new("../../../foo")->abs("http://host/a/b")
- ==> "http://host/../../foo"
-
- local $URI::ABS_REMOTE_LEADING_DOTS = 1;
- URI->new("../../../foo")->abs("http://host/a/b")
- ==> "http://host/foo"
-
- $URI::DEFAULT_QUERY_FORM_DELIMITER
- This value can be set to ";" to have the query form "key=value"
- pairs delimited by ";" instead of "&" which is the default.
-
-BUGS
- There are some things that are not quite right:
-
- * Using regexp variables like $1 directly as arguments to the URI
- accessor methods does not work too well with current perl
- implementations. I would argue that this is actually a bug in perl.
- The workaround is to quote them. Example:
-
- /(...)/ || die;
- $u->query("$1");
-
- * The escaping (percent encoding) of chars in the 128 .. 255 range
- passed to the URI constructor or when setting URI parts using the
- accessor methods depend on the state of the internal UTF8 flag (see
- utf8::is_utf8) of the string passed. If the UTF8 flag is set the
- UTF-8 encoded version of the character is percent encoded. If the
- UTF8 flag isn't set the Latin-1 version (byte) of the character is
- percent encoded. This basically exposes the internal encoding of
- Perl strings.
-
-PARSING URIs WITH REGEXP
- As an alternative to this module, the following (official) regular
- expression can be used to decode a URI:
-
- my($scheme, $authority, $path, $query, $fragment) =
- $uri =~ m|(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?|;
-
- The "URI::Split" module provides the function uri_split() as a readable
- alternative.
-
-SEE ALSO
- URI::file, URI::WithBase, URI::QueryParam, URI::Escape, URI::Split,
- URI::Heuristic
-
- RFC 2396: "Uniform Resource Identifiers (URI): Generic Syntax",
- Berners-Lee, Fielding, Masinter, August 1998.
-
- <http://www.iana.org/assignments/uri-schemes>
-
- <http://www.iana.org/assignments/urn-namespaces>
-
- <http://www.w3.org/Addressing/>
-
-COPYRIGHT
- Copyright 1995-2009 Gisle Aas.
-
- Copyright 1995 Martijn Koster.
-
- This program is free software; you can redistribute it and/or modify it
- under the same terms as Perl itself.
-
-AUTHORS / ACKNOWLEDGMENTS
- This module is based on the "URI::URL" module, which in turn was
- (distantly) based on the "wwwurl.pl" code in the libwww-perl for perl4
- developed by Roy Fielding, as part of the Arcadia project at the
- University of California, Irvine, with contributions from Brooks Cutter.
-
- "URI::URL" was developed by Gisle Aas, Tim Bunce, Roy Fielding and
- Martijn Koster with input from other people on the libwww-perl mailing
- list.
-
- "URI" and related subclasses was developed by Gisle Aas.
-
diff --git a/dist.ini b/dist.ini
new file mode 100644
index 0000000..21d726e
--- /dev/null
+++ b/dist.ini
@@ -0,0 +1,272 @@
+name = URI
+author = Gisle Aas <gisle@activestate.com>
+license = Perl_5
+copyright_holder = Gisle Aas
+copyright_year = 1998
+
+[Prereqs / RuntimeRequires]
+MIME::Base64 = 2
+parent = 0
+Exporter = 5.57
+utf8 = 0
+Scalar::Util = 0
+perl = 5.008001
+
+[Prereqs / RuntimeRecommends]
+Business::ISBN = 0
+
+[Prereqs / TestRequires]
+Test::More = 0.96
+File::Temp = 0
+Test::Needs = 0
+; Config = 0 not indexed!
+
+[Prereqs / DevelopRequires]
+Business::ISBN = 0
+MIME::Base64 = 0
+
+[Encoding]
+encoding = ISO-8859-1
+filename = t/data.t
+filename = t/escape.t
+filename = t/http.t
+; t/idna.t - utf-8
+; t/iri.t - utf-8
+filename = t/old-base.t
+filename = t/pop.t
+; t/punycode.t - utf-8
+filename = t/rtsp.t
+; t/utf8.t
+
+
+
+;+[Encoding]
+;+encoding = ISO-8859-1
+;+filename = t/data.t
+;+filename = t/escape.t
+;+filename = t/http.t
+;+filename = t/old-base.t
+;+filename = t/pop.t
+;+filename = t/rtsp.t
+
+; from here on the config is temporary; will be pulled off into a bundle later on.
+
+[RewriteVersion]
+global = 1
+add_tarball_name = 0
+
+[PromptIfStale / stale modules, release]
+phase = release
+check_all_plugins = 1
+check_all_prereqs = 1
+
+[Git::GatherDir]
+:version = 2.016
+exclude_filename = INSTALL
+exclude_filename = LICENSE
+exclude_filename = META.json
+exclude_filename = Makefile.PL
+exclude_filename = README.md
+exclude_filename = README.pod
+exclude_filename = TODO
+exclude_filename = cpanfile
+
+[MetaYAML]
+[MetaJSON]
+[Readme]
+[Manifest]
+[License]
+
+[InstallGuide]
+:version = 1.200005
+
+;;; Tests
+[Test::Compile]
+:version = 2.039
+bail_out_on_fail = 1
+xt_mode = 1
+
+;[Test::NoTabs] TODO
+;:version = 0.08
+;finder = :InstallModules
+;finder = :ExecFiles
+;finder = :TestFiles
+;finder = :ExtraTestFiles
+
+;[Test::EOL] TODO
+;:version = 0.17
+;finder = :InstallModules
+;finder = :ExecFiles
+;finder = :TestFiles
+;finder = :ExtraTestFiles
+
+[MetaTests]
+;[Test::CPAN::Changes] TODO
+;:version = 0.012
+[Test::ChangesHasContent]
+[Test::MinimumVersion]
+:version = 2.000003
+max_target_perl = 5.008001
+[PodSyntaxTests]
+:version = 5.040
+;[PodCoverageTests] TODO
+;:version = 5.040
+;[Test::PodSpelling] TODO
+;:version = 2.006003
+;directory = lib
+;directory = t
+;directory = xt
+
+;[Test::Pod::LinkCheck] many outstanding bugs
+;[Test::Pod::No404s] too many unresolvable URLs in this distribution
+;:version = 1.003
+[Test::Kwalitee]
+:version = 2.10
+filename = xt/author/kwalitee.t
+[MojibakeTests]
+:version = 0.8
+[Test::ReportPrereqs]
+:version = 0.022
+verify_prereqs = 1
+version_extractor = Module::Metadata
+[Test::Portability]
+:version = 2.000007
+;[Test::CleanNamespaces] TODO
+;:version = 0.006
+
+
+;;; Metadata
+
+[MetaProvides::Package]
+:version = 1.15000002
+finder = :InstallModules
+meta_noindex = 1
+inherit_version = 0
+inherit_missing = 0
+
+[MetaConfig]
+
+[GithubMeta]
+:version = 0.54
+homepage = 0
+issues = 0
+
+[MetaResources]
+bugtracker.mailto = bug-URI@rt.cpan.org
+bugtracker.web = https://rt.cpan.org/Public/Dist/Display.html?Name=URI
+x_IRC = irc://irc.perl.org/#lwp
+x_MailingList = http://lists.perl.org/list/libwww-perl
+
+[Authority]
+authority = cpan:GAAS
+do_metadata = 1
+do_munging = 0
+
+[Prereqs::AuthorDeps]
+
+[MakeMaker]
+
+[Git::Contributors]
+:version = 0.029
+order_by = commits
+
+[StaticInstall]
+:version = 0.005
+mode = auto
+dry_run = 0
+
+
+[RunExtraTests]
+:version = 0.024
+default_jobs = 9
+
+
+;;; After Build
+[CheckSelfDependency]
+
+[Run::AfterBuild / .ackrc]
+:version = 0.038
+quiet = 1
+run = bash -c "test -e .ackrc && grep -q -- '--ignore-dir=.latest' .ackrc || echo '--ignore-dir=.latest' >> .ackrc; if [[ `dirname '%d'` != .build ]]; then test -e .ackrc && grep -q -- '--ignore-dir=%d' .ackrc || echo '--ignore-dir=%d' >> .ackrc; fi"
+
+
+;;; Before Release
+[CheckStrictVersion]
+decimal_only = 1
+
+[Git::Check / initial check]
+allow_dirty =
+
+[Git::CheckFor::MergeConflicts]
+
+[Git::CheckFor::CorrectBranch]
+:version = 0.004
+release_branch = master
+
+[Git::Remote::Check]
+branch = master
+remote_branch = master
+
+[CheckPrereqsIndexed]
+:version = 0.019
+[TestRelease]
+[Git::Check / after tests]
+allow_dirty =
+[CheckIssues]
+;(ConfirmRelease)
+
+
+;;; Releaser
+[UploadToCPAN]
+
+
+;;; AfterRelease
+
+[CopyFilesFromRelease]
+filename = Changes
+filename = INSTALL
+filename = LICENSE
+
+[ReadmeAnyFromPod]
+:version = 0.142180
+type = pod
+location = root
+phase = release
+
+[Git::Commit / release snapshot]
+:version = 2.020
+add_files_in = .
+allow_dirty = Changes
+allow_dirty = INSTALL
+allow_dirty = LICENSE
+allow_dirty = README.pod
+commit_msg = %N-%v%t%n%n%c
+
+[Git::Tag]
+tag_format = v%v
+tag_message = v%v%t
+
+[GitHub::Update]
+:version = 0.40
+metacpan = 1
+
+[NextRelease]
+:version = 5.033
+time_zone = UTC
+format = %-8v %{yyyy-MM-dd HH:mm:ss'Z'}d%{ (TRIAL RELEASE)}T
+
+[Git::Commit / post-release commit]
+:version = 2.020
+allow_dirty = Changes
+allow_dirty_match = ^lib/.*\.pm$
+commit_msg = increment $VERSION after %v release
+
+[Git::Push]
+
+[Run::AfterRelease / release complete]
+:version = 0.038
+quiet = 1
+eval = print "release complete!\xa"
+
+; listed late, to allow all other plugins which do BeforeRelease checks to run first.
+[ConfirmRelease]
diff --git a/t/distmanifest.t b/t/distmanifest.t
deleted file mode 100644
index c2812f7..0000000
--- a/t/distmanifest.t
+++ /dev/null
@@ -1,11 +0,0 @@
-use strict;
-use warnings;
-
-use Test::More;
-BEGIN {
- plan skip_all => 'these tests are for authors only!'
- unless -d '.git' || $ENV{AUTHOR_TESTING};
-}
-
-use Test::DistManifest;
-manifest_ok();