libwww-perl-6.31/ 000700 000766 000024 00000000000 13213362654 014164 5 ustar 00ether staff 000000 000000 libwww-perl-6.31/bin/ 000700 000766 000024 00000000000 13213362654 014734 5 ustar 00ether staff 000000 000000 libwww-perl-6.31/Changes 000600 000766 000024 00000347625 13213362654 015502 0 ustar 00ether staff 000000 000000 Change history for libwww-perl
6.31 2017-12-11 01:55:53Z
- fix version numbering (RT#123841)
6.30 2017-12-07
- Use tr/// instead of s/// where appropriate (Ville Skyttä) (GH #265)
- Use parent -norequire instead of base to not look for external
dependencies (Fabian Zeindler) (GH #259)
- Fix run_handlers to allow assigning to the request / response (Gianni
Ceccarelli) (GH #274)
6.29 2017-11-06
- Fix some version numbers
6.28 2017-11-06
- Remove last use of Geopt::Std (Sergey Remanov) (GH #267)
- Include unmatched connect error in status string (Patrik Lundin) (GH #269)
- Fix insecure open FILEHANDLE,EXPR (Takumi Akiyama) (GH #270)
6.27 2017-09-21
- Switch to Getopt::Long in lwp-download (GH #262)
- Fix lwp-request -C (GH #261)
- Hide LWP::Protocol::http::Socket, LWP::Protocol::http::SocketMethods and
LWP::Debug::TraceHTTP::Socket from PAUSE
- Add tests for the "get" & "head" functions (GH #252)
- Update lwpcook.pod (GH #256)
- Handle undefined values in ->credentials (GH #157)
- Fix lwp-mirror options checks.
- Update bin/ scripts to use $LWP::VERSION instead of ->Version()
- Improve lwp-download --help (GH #262)
6.26 2017-04-12
- Perltidy all apps in the bin/ directory
- Make all apps in bin/ use strict and warnings (RT #92633)
- Fix bug tracker URL in metadata
6.25 2017-04-03
- Fix LWP::UserAgent docs for request and request_simple that pointed to
functions in LWP::Simple rather than LWP::UserAgent
- Moved the official bug tracker to GitHub rather than RT.
6.24 2017-03-14
- Document clone methods inability to clone cookie jars (RT #13542)
- It is now possible to set the proxy and no_proxy attributes from the
constructor of LWP::UserAgent. (GH #124)
6.23 2017-03-06
- Fix bug where Protocol::NNTP called undef on a variable before being done
using it. (GH PR #121)
- Ran perltidy on LWP::Protocol::NNTP
- Re-organized current documentation set.
6.22 2017-03-01
- Update Travis-CI to test on minimum versions of prereqs. (GH PR #109)
- Fix tests that depended on a newer version of HTTP::Message (GH PR #119)
- Update documentation to reflect behavior difference in ->put() depending
on the version of HTTP::Message installed. (GH PR #120)
6.21 2017-02-21
- Ensure that LWP::Simple re-exports some HTTP::Status functions
6.20 2017-02-21
- Converted to use Dist::Zilla
- Moved several tests to xt/author
6.19 2017-02-14
- Call HTTP::Status constant functions without & (GH#110)
- Make bin scripts use LWP's version and not maintain their own (PR #54)
- Fix bug triggered in some cases of auth challenges not having a viable
protocol (PR#111)
- Remove usage of the 'vars' pragma (GH#113)
6.18 2017-02-03
- Update "timeout" when reusing sockets (PR#90)
- Fix bug triggered when calling simple_request() with a malformed URL
(PR#108)
6.17 2017-01-31
- Noted another protocol failure message (PR#65)
- Removed old use of UNIVERSAL::isa() and swapped evals for Try::Tiny (PR#105)
- Standardized the Changes file (GH#106)
- Fixed documentation error in lwp-request.
6.16 2017-01-18
- Moved LWP::Protocol::GHTTP into its own dist and removed from here (PR#81)
- Updated test suite to use strict/warnings and Test::More (PR#88)
- Additional tests for UserAgent coverage (PR#79)
- Cleaned up documentation formatting and fixed several typos (PR#87, PR#93)
- Stop promoting use of HTTP::Cookies and instead use HTTP::CookieJar::LWP (PR#102)
- Added some new documentation to UserAgent and tutorial (PR#68)
- Allow default header to carry over when using ->post() in UA (PR#100)
6.15 2015-12-15
- tests now use localhost rather than a net-accessible address (PR#76, RT#94959)
- fixed some tests to do what they intended (regex rather than boolean checks) (from PR#28)
- conversion of some tests from Test.pm to Test::More (from PR#29)
- use File::Temp for randomized tempdir (PR#53)
6.13 2015-02-14
- fixed Makefile.PL compatibility with older ExtUtils::MakeMaker (from
release 6.12)
6.12 2015-02-13
- fixed prereq declarations in release 6.11
6.11 2015-02-13
- cleanup of the test running mechanism; allowing greater flexibility and
should also resolve RT#102083
6.10 2015-02-12
- lower runtime prereqs recommendation on LWP::Protocol::https to suggests,
to work around a circular dependency in CPAN clients when the 'install
recommendations' option is enabled (RT#101732)
6.09 2015-02-09
- checks for EINTR now also check EWOULDBLOCK (they sometimes differ on
MSWin32)
- fixed pod syntax
- Fixed checking the % character in address regex
- Improved regex for literal IPv6 addresses
6.08 2014-07-24
- Requiring Net::HTTP 6.07 to fix IPv6 support (RT#75618 and
https://github.com/libwww-perl/net-http/pull/10)
- When the hostname is an IPv6 literal, encapsulate it with [brackets]
before calling Net::HTTP [rt.cpan.org #29468]
- Extra steps to make sure that the host address that has a ":" contains
only characters appropriate for an IPv6 address.
- Fix doc typo for cookie_jar
6.07 2014-07-01
- Removed Data::Dump references in test suite and dependency in Makefile.PL
- Added MANIFEST.SKIP to enable "make manifest".
- release script now checks for MacOS to avoid incompatible tarballs
- Bumped version number to 6.07
- Fixed gnu-incompatible tarball problem ([rt.cpan.org #94844])
6.06 2014-04-16
- Merge pull request #44 from dsteinbrunner/master
- Spelling fixes.
- Merge pull request #55 from oalders/master
- Merge pull request #38 from mbeijen/typo-sting
- Merge pull request #43 from dsteinbrunner/master
- Spelling corrections
- Typo fixes.
- correct behavior for https_proxy,
- e.g. don't send plain https:// requests to proxy, but instead
establish CONNECT tunnel and then send requests inside tunnel. This
change does together with a change in LWP::Protocol::https. The
change supports LWP::Protocol::https with the default IO::Socket::SSL
backend, but also with Net::SSL. Also:
- proxy authorization is supported (http://user:pass@host:port as
proxy URL, Net::SSL still needs special HTTPS_PROXY_* ENV
variables, as before)
- CONNECT request does not need to be the first request inside the
tunnel (not with Net::SSL)
- conn_cache is read and written inside request(), instead of
writing in request() and reading in _new_socket(). If a https
tunnel is established the cache_key no longer depends only on
proxy host,port but also on the tunnel endpoint
- CONNECT is a proxy request and must always use Proxy-Authorization,
not Authorization header
- fix: auth-header of Digest auth did not conform to
- RFC 2617 when WWW-Authenticate has 'qop' parameter.
- SSL libs might trigger ENOTTY on read
- Small typo.
6.05 2013-03-11
- Derive message from status code if it was not provided
- Merge pull request #33 from tomhukins/fix-readme
- fix typo in comment
- Spelling fixes.
- Spelling fix.
- Merge pull request #34 from berekuk/fix-github-path
- Update repo URL
- With Net::HTTP 6.04 we don't need our own can_read() and sysread override
- $ENV{HTTP_PROXY} might override our test setup [RT#81381]
- fix github url in perldoc
- * Pod is utf-8
- Match required perl in Makefile.PL
- Fix Github URLs
6.04 2012-02-18
- Typo fix; envirionment [RT#72386]
- Implement $ua->is_online test
- Add separate option to enable the live jigsaw tests
- Merge pull request #10 from trcjr/master
- now with put and delete helpers
- updated POD
- unit tests for ua->put and ua->delete
- These modules work with 5.8.1
6.03 2011-10-15
- Link updates.
- Attribute documentation wording improvements.
- Don't parse robots.txt response content unless it's textual.
- Decode robots.txt response content before attempting to parse it.
- RobotUA robots.txt response parsing cleanups.
- Don't parse HEAD of robots.txt responses.
- Request handler doc grammar fixes.
- Pass on HTTP/1.0 if set as request protocol
- Remove outdated docs (not touched since 1996 :-)
- Merge pull request #22 from madsen/RT67947-verify_hostname
- PERL_LWP_ENV_PROXY tweaks
- lwp-request didn't respect -H Content-type [RT#70488]
- lwp-request -H didn't allow repeated headers
- verify_hostname defaults to 0 if ssl_opts provided [RT#67947]
- Test verify_hostname setting
- Fix expect header support to work with content refs.
- add PERL_LWP_ENV_PROXY env variable to enable env_proxy globally
6.02 2011-03-27
- This is the release where we try to help the CPAN-toolchain be able to
install the modules required for https-support in LWP. We have done this
by unbundling the LWP::Protocol::https module from the libwww-perl
distribution. In order to have https support you now need to install
(or depend on) 'LWP::Protocol::https' and then this will make sure that
all the prerequisite modules comes along. See [RT#66838].
- This release also removes the old http10 modules that has really been
deprecated since v5.60. These should have been removed at the v6.00
jump, but I forgot.
- Ignores env variables when ssl_opts provided [RT#66663]
- Fix typo; Authen::NTLM [RT#66884]
- Support LWP::ConnCache->new(total_capacity => undef)
6.01 2011-03-09
- Add missing HTTP::Daemon dependency for the tests.
6.00 2011-03-08
- Unbundled all modules not in the LWP:: namespace from the distribution.
The new broken out CPAN distributions are
File-Listing, HTML-Form, HTTP-Cookies, HTTP-Daemon, HTTP-Date,
HTTP-Message, HTTP-Negotiate, Net-HTTP, and WWW-RobotRules.
libwww-perl-6 require these to be installed.
- This release also drops the unmaintained lwp-rget script from the distribution.
- Perl v5.8.8 or better is now required. For older versions of perl please
stay with libwww-perl-5.837.
- For https://... default to verified connections with require
IO::Socket::SSL and Mozilla::CA modules to be installed. Old behaviour
can be requested bysetting the PERL_LWP_SSL_VERIFY_HOSTNAME environment
variable to 0. The LWP::UserAgent got new ssl_opts method to control
this as well.
- Support internationalized URLs from command line scripts and in the proxy
environment variables.
- The lwp-dump script got new --request option.
- The lwp-request script got new -E option, contributed by Tony Finch.
- Protocol handlers and callbacks can raise HTTP::Response objects as
exceptions. This will abort the current request and make LWP return the
raised response.
5.837 2010-09-20
- Fix for Encode 2.40
- Fix Perl syntax error in synopsis
- Allow ISO 8601 date strings when parsing Apache file listings
5.836 2010-05-13
- Fix problem where $resp->base would downcase its return value
5.835 2010-05-05
- simple string can be simplified
- Make $mess->decoded_content remove XML encoding declarations [RT#52572]
- Don't allow saving to filenames starting with '.' suggested by server
- Avoid race between testing for existence of output file and opening the file
- Minor doc fixup -- wrongly ucfirsted word
- Use decoded_content in HTTP:Response synopsis [RT#54139]
- sun.com is no more. rip!
- Trivial layout tweak to reduce variable scope.
- Add 'make test_hudson' target
- Implement alt_charset parameter for decoded_content()
- Test decoding with different charset parameters
- lwp-download now needs the -s option to honor the Content-Disposition header
- Make LWP::MediaTypes::media_suffix case insensitive.
- Skip XML decoding tests if XML::Simple is not available.
- Documentation fixes.
- Fix m_media_type => "xhtml" matching.
- Make parse_head() apply to data: requests.
- Documentation spelling fixes.
- Documentation grammar fixes.
- Use $uri->secure in m_secure if available.
- Fix handling of multiple (same) base headers, and parameters in them.
- Strip out empty lines separated by CRLF
- Best Practice: avoid indirect object notation
- Speed up as_string by 4% by having _sorted_field_names return a reference
- Speed up scan() a bit. as_string() from this branch is now 6% faster
- Port over as_string() optimizations from HTTP::Headers::Fast
- Link to referenced documentation.
- Update repository location.
- Remove needless (and actually harmful) local $_
- "Perl & LWP" is available online
5.834 2009-11-21
- Check for sane default_headers argument [RT#50393]
- Add $ua->local_address attribute [RT#40912]
- Test that generation of boundary works [RT#49396]
- Page does not display the "standard" apache listing any more
- Remove unneeded executable permissions.
- Switch compression/decompression to use the IO::Compress/IO::Uncompress
and Compress::Raw::Zlib family of modules.
- lwp-request should use stderr for auth [RT#21620]
5.833 2009-10-06
- Deal with cookies that expire far into the future [RT#50147]
- Deal with cookies that expire at or before epoch [RT#49467]
- Pass separate type for https to LWP::ConnCache [RT#48899]
- Improved handling of the User-Agent header [RT#48461]
- HTTP::Cookies add_cookie_header previous Cookies [RT#46106]
- Improve diagnostics from LWP::UserAgent::mirror [RT#48869]
- mirror should die in case X-Died is set [RT#48236]
- Increase default Net::HTTP max line length to 8k.
5.832 2009-09-21
- Fix net test suite.
- Comment spelling fixes.
- Fix links to old Netscape cookie specification.
- Documentation spelling fixes.
- Improve max line length exceeded/read error messages.
- Do not warn about seemingly wellformed but unrecognized robots.txt lines.
- $mess->content_charset would fail for empty content
- Further restrict what variables env_proxy() process
5.831 2009-08-13
- Fix bzip2 content encoding/decoding.
- send_te() doc grammar fix.
- Document time2str() behavior with an undefined argument.
- HTML::Message's content_charset trigger warnings from HTML::Parser [RT#48621]
5.830 2009-07-26
- select doesn't return undef on failure [RT#32356]
- Add raw RFC 1951 deflate test case.
5.829 2009-07-07
- This release removes callback handlers that were left over on the returned
HTTP::Responses. This was problematic because it created reference loops
preventing the Perl garbage collector from releasing their memory.
Another problem was that Storable by default would not serialize these
objects any more.
- This release also adds support for locating HTML::Form inputs by id or
class attribute; for instance $form->value("#foo", 42) will set the
value on the input with the ID of "foo".
- Make the example code 'use strict' clean by adding a my
- Avoid cycle in response
- Clean up handlers has from response after data processing is done
- Support finding inputs by id or class in HTML::Form
- Test HTML::Form selectors
- Tidy and document the internals of mirror() better [RT#23450]
- Avoid warnings from HTML::Form [RT#42654]
5.828 2009-06-25
- A quick new release to restore compatibility with perl-5.6.
- Less noisy behaviour when we can't download the documents
- Restore perl-5.6 compatibility [RT#47054]
- Don't decode US-ASCII and ISO-8859-1 content
- Some versions of Encode don't support UTF-16-BE [RT#47152]
- Spelling fixes.
5.827 2009-06-15
- The main news this time is better detection of what character set the
document in a response uses and the addition of the lwp-dump script that
I found useful.
- Added lwp-dump script
- Replace calls to $req->url with $req->uri
- Also need to encode strings in the latin1 range
- Ignore the value set for file inputs [RT#46911]
- Add docs to lwp-dump
- Don't let lwp-dump follow redirects
- Support --method options
- Implement the --agent option
- Dictionary order for the option docs; document --method
- Merge branch 'dump'
- Files are passed as an array and we must not stringify it.
- Add content_charset method to HTTP::Message
- Start guessing the charset for a message
- Let content_charset guess the charset to use for decoded_content
- Specify what's missing for the XML and HTML case
- Provide charset parameter for HTML::Form->parse()
- Make content_charset sniff for elements specifying the charset.
- Determine charset of XML documents
- Get rid of the _trivial_http_get() implementation
- Update the bundled media.types file
- LWP::Simple::get() now returns decoded_content [RT#44435]
- Implement content_type_charset method for HTTP::Headers
- Implement content_is_text method for HTTP::Headers
- Make use of content_is_text and content_type_charset in decoded_content
- Don't let the parse_head callback append to the HTTP headers
- Don't set Range header on request when max_size is used [RT#17208]
- Still show client headers for internal responses
- Document Client-Warning: Internal response
- Don't use 'no' as example domain for no_proxy docs [RT#43728]
- Drop exit from the Makefile.PL [RT#43060]
- Merge branch 'content_charset'
- Support "accept-charset" attribute in HTML::Form
- new tests for max_size and 206 responses [RT#46230]
- Reformulation of Client-Warning: Internal documentation
5.826 2009-04-24
- Avoid returning stale Content-Type header after message parts have been updated
- Don't let content saved to file be affected by the $\ setting
- Issues around multipart boundaries [RT#28970]
- Ignore random _proxy env variables, allow only valid schemes
- README.SSL is not anymore available at the linpro.no URL.
- Make LWP::UserAgent constructor honor the default_headers option [RT#16637]
5.825 2009-02-16
- Fixup test failure with perl-5.8.8 and older; qr/$/m doesn't work
5.824 2009-02-13
- Make format_request() ensure that it returns bytes [RT#42396]
- Force bytes in all the format_* methods.
- Ignore Sitemap: lines in robots.txt [RT#42420]
- Refactor; use variable to hold the test port
- Add redirects method to HTTP::Message
- Setting $ua->max_redirect(0) didn't work [RT#40260]
- Convert files to UTF-8
- HTTP::Cookies destructor should not clobber $! and other globals.
- Deal with the Encode module distributed with perl-5.8.0
- Avoid failure if 127.0.0.1:8333 is in use [RT#42866]
- Documentation improvements, spelling fixes.
5.823 2008-12-05
- Bring back the LWP::Debug code [RT#41759]
- Add documentation section about 'Network traffic monitoring'.
- Typo fixes
- Want to ensure we get a single value back here.
5.822 2008-12-05
- A more modern user_agent example.
- Make it possible to unset the proxy settings again
- Prefer use specified Content-Length header [RT#41462]
- Deprecate LWP::Debug
5.821 2008-11-25
- Various bug fixes.
- The Content-Length and Content-MD5 headers are no longer valid after encode/decode
- Add META information
- croak on bad proxy args [RT#39919]
- Skip a failing decoded_content on systems without Encode.pm [RT#40735]
- Skip LWP test when fork() is unimplemented
- redo used incorrectly in LWP::Protocol::http [RT#41116]
- HTTP::Cookies::Microsoft now handles user names with space [RT#40917]
- Avoid aborting requests saved to file early [RT#40985]
5.820 2008-11-05
- Main news is the ability to control the heuristics used to determine the
expiry time for response objects.
- Reformat later parts of Changes
- Add a paragraph to summarize the motivation for releases since 5.815
- all_pod_files_ok();
- Fix POD markup error
- Calculation of current_age with missing Client-Date.
- The age/freshness methods now take an optional 'time' argument
- More correct matching of 'max-age' in freshness_lifetime method
- The freshness_lifetime method now support options to control its heuristics
5.819 2008-10-20
- Release 5.815 to 5.818 had a severe bug that sometimes made LWP not
collect all data for the responses it received. This release is strongly
recommended as an upgrade for those releases.
- Don't override $Net::HTTPS::SSL_SOCKET_CLASS if it's already set.
- Wrong content handlers would sometimes be skipped [RT#40187]
5.818 2008-10-16
- Main news in this release is the addition of the dump() method to the
request and response objects. If found that I often ended up printing
$resp->as_string for debugging and then regretting after the terminal
got into a strange mode or just kept on scrolling for the longest time.
- Use deflate compression instead of gzip for the test
- Simplify; Get rid of the $USE_STORABLE_DCLONE configuration
- Add dump method to HTTP::Message.
- Use $res->dump instead of rolling our own.
- Layout change; move headers() methods to a more logical place.
- Add support for x-bzip2 encoding; fix bzip2 decoding.
- Add send_header method to HTTP::Daemon
- Make the lwp-request User-Agent string include the LWP version.
- clone implemented in terms of Storable::dclone [RT#39611]
5.817 2008-10-10
- This is the release where I played around with Devel::NYTProf to figure
where time was actually spent during the processing of requests with
LWP. The methods that manipulated header objects stood out, so this
release contains a few tweaks to make those parts faster.
- I also figured a few convenience methods to encode and decode the content
of request/response objects would be in order.
- Should store "wire" headers field names with _ without translation.
- Test HTTP::Request->parse().
- Restore pre-5.815 behaviour of returning "400 Bad Request" [RT#39694]
- Rename the HTTP::Status constants to have HTTP_ prefix
- Detection of unsupported schemes was broken [RT#37637]
- Allow tainted methods to be forwarded to HTTP::Headers [RT#38736]
- Add strict mode to HTML::Form
- Fix test now that less warnings are generated.
- Add content_is_xml method
- Make split_header_words() lower case returned tokens/keys
- Avoid invoking AUTOLOAD on object destruction [RT#39852]
- Add decode() method to HTTP::Message
- Add encode() method to HTTP::Message
- Allow multiple fields to be set with push_header().
- Make content_type and content_is_xhtml methods faster
- Faster push_header()
5.816 2008-09-29
- Oops, release 5.815 broke download-to-file on Windows.
- Add missing binmode() [RT#39668]
- Doc tweaks
5.815 2008-09-24
- The main change this time is the introduction of handlers to drive the
processing of requests in LWP::UserAgent. You can also register your
own handlers for modifying and processing requests or responses on their
way, which I think is a much more flexible approach that trying to
subclass LWP::UserAgent to customize it. If we have had these early on
then the LWP::UserAgent API could have been so much simpler as the
effect of most current attributes can easily be set up with trivial
handlers.
- Also thanks to contributions by Bron Gondwana LWP's Basic/Digest auth
modules now registers handlers which allow them to automatically fill
in the Authorization headers without first taking the round-trip of a
401 response when LWP knows the credentials for a given realm.
- We don't need to build the docs to run the tests.
- Style tweaks.
- The jigsaw service isn't up to much good these days.
- HTTP::Cookies produces warnings for undefined cookie param names [RT#38480]
- Typo fix; HTTP::Message will never include x-bzip2 in Accept-Encoding [RT#38617]
- Added HTTP::Config module
- Add methods to configure processing handlers.
- 100 Continue response not complete.
- Use 3-arg open when response content to files.
- Make the show_progress attribute official (by documenting it).
- Start using handlers for driving the inner logic of LWP::UserAgent.
- Expose the content_is_html and content_is_xhtml methods from HTTP::Headers.
- Make credentials method able to get/set values.
- An auth handler per realm.
- Match proxy setting for request.
- Set up separate handler for adding proxy authentication.
- Add request_preprepare to be able to initialize proxy early enough.
- Smarter get_my_handler() that can also create handlers.
- Refactor; introduce run_handlers method
- Pass in handler hash to the handler callback.
- Don't let version=1 override behaviour if specified with a plan Set-Cookie header.
- Remove handler when we don't have a username/password for the realm.
- Make tests use Test.pm
- Double-check that username or password has changed after a failed login.
- Update Digest Authen to subclass Basic.
- Avoid running out of filehandles with DYNAMIC_FILE_UPLOAD.
- Fixed parsing of header values starting with ':' [RT#39367]
- Documentation typo fixes [RT#38203]
5.814 2008-07-25
- Typo fix.
- Add HTTP::Message::decodable()
- Use decoded_content in the synopsis
- Avoid adding an empty first part in $mess->add_part()
- Get rid of all the manual dependency tests.
- Simplify the Makefile.PL (no interactivity)
- Provide DELETE method in HTTP::Request::Common [RT#37481]
- Checkbox picks up nearby text in description of alternates [RT#36771]
- HTML::Form::possible_values() should not returned disabled values [RT#35248]
- File::Listing documentation claimed only 'unix' format was supported [RT#22021]
- File::Listing only support English locales [RT#28879]
- Make common-req.t use Test.pm
- Typo; CAN_TALK_TO_OUTSELF
- Fix up File::Listings fallback to dosftp [RT#23540]
- File::Listing parse failure on BSD Linux based systems [RT#26724]
5.813 2008-06-17
- RobotUA constructor ignores delay, use_sleep [RT#35456]
- Spelling fixes [RT#35457]
- Add HTTP::Response->filename [RT#35458]
- Better diagnostics when the HTML::TokeParser constructor fails [RT#35607]
- Multiple forms with same-named parse wrongly [RT#35607]
- Provide a progress method that does something that might be useful.
- Documentation typo fix [RT#36132]
5.812 2008-04-16
- Typo fix.
- Simplified Net::HTTP::Methods constructor call.
- Croak if Net::HTTP constructor called with no argument.
- Avoid calling $self->peerport to figure out what the port is.
- 5.811 breaks SSL requests [RT#35090]
- Make test suite compatible with perl-5.6.1.
- Wrong treatment of qop value in Digest Authentication [RT#35055]
5.811 2008-04-14
- Avoid "used only once" warning for $Config::Config.
- Make HTTP::Request::Common::PUT set Content-Length header [RT#34772]
- Added the add_content_utf8 method to HTTP::Message.
- Typo fix.
- Retry syscalls when they fail with EINTR or EAGAIN [RT#34093,32356]
- Allow HTTP::Content content that can be downgraded to bytes.
- HTML::Form does not recognise multiple select items with same name [RT#18993]
- Document how HTTP::Status codes correspond to the classification functions [RT#20819]
- Allow 100, 204, 304 responses to have content [RT#17907]
- HTTP::Request::Common::POST suppressed filename="0" in Content-Disposition [RT#18887]
5.810 2008-04-08
- Small documentation issues [RT#31346]
- Explain $netloc argument to $ua->credentials [RT#31969]
- Make lwp-request honour option -b while dumping links [RT#31347]
- Ignore params for date convenience methods [RT#30579]
- Get rid of all the old CVS $Keyword:...$ templates. Set $VERSION to 5.810.
- Update Copyright year.
- Drop some sample URLs that were failing.
- Complement the HTTP::Status codes [RT#29619]
- Don't allow HTTP::Message content to be set to Unicode strings.
- Refactor test for Encode.pm
- Spelling fixes [RT#33272]
- Trigger HTML::HeadParser for XHTML [RT#33271]
- Escape status line in error_as_HTML, convert to lowercase [RT#33270]
- Typo fix [RT#33843]
- Protocol/file.pm: postpone load of URI::Escape and HTML::Entities [RT#33842]
- HTML::Form Module and element clicks
- HTTP::Cookies handle malformed empty Set-Cookie badly [RT#29401]
- [HTTP::Request::Common] Does not handle filenames containing " [RT#30538]
- Allow malformed chars in $mess->decoded_content [RT#17368]
- Croak if LWP::UserAgent is constructed with hash ref as argument [RT#28597]
- Disabled, checked radiobutton being submitted [RT#33512]
- warn if TextInput's maxlength exceeded [RT#32239]
5.808 2007-08-05
- Get rid of t/live/validator test. Too much JavaScript madness for it to
be a sane LWP test.
5.807 2007-07-31
- Apply patch correction from CPAN RT #26152
- More laxed t/live/validator test.
5.806 2007-07-19
- Added progress callback to LWP::UserAgent.
- HTTP::Daemon didn't avoid content in responses to HEAD requests
- Add support for HTTP Expect header to HTTP::Daemon (CPAN RT #27933)
- Fix t/base/message.t so tests are skipped if Encode is not installed.
(RT #25286)
- Add HTML::Tagset as a prerequisite to Makefile.PL
- Do not clobber $_ in LWP::Protocol::nntp (CPAN RT #25132)
- Fix lwp-download so it can download files with an "_" in the filename
(CPAN RT#26207)
- Quiet complaints from HTML::HeadParser when dealing with undecoded UTF-8
data. (CPAN RT#20274)
- When both IO::Socket::SSL and Net::SSL are loaded, use the latter
(CPAN RT #26152)
- Allows SSL to work much more reliably: (CPAN RT #23372)
- Allow text/vnd.wap.wml and application/vnd.oasis.opendocument.text in
content-type field in lwp-request (CPAN RT #26151)
- Add default media type for XML in LWP::MediaTypes (CPAN RT #21093)
- Added chunked test by Andreas J. Koenig
5.805 2005-12-08
- HTTP::Date: The str2time function returned wrong values for years in the
early 20th century, because timelocal() actually expects the year to be
provided on a different scale than what localtime() returns.
- HTTP::Headers can now be constructed with field names that repeat. The
$h->header function now also accept repeating field names and can also
remove headers if passed undef as value.
- HTML::Form: The parse method now takes hash style optional arguments and
the old verbose behaviour is now off by default.
- HTML::Form: Accept for compatibility with other
browsers. Patch by Josh Rai .
- HTML::Form: Sane handling of 'disabled' for ListInput. Based on patch by
Joao Lopes .
- HTTP::Negotiate: Fixed matching of partial language tags. Dan Kubb.
- HTTP::Response: The as_string method now returns a status line that
doesn't add the "official" code name in the message field. This improves
the ability to round-trip response objects via
HTTP::Response->parse($res->as_string) and makes the first line of the
string returned agree with $res->status_line.
- Net::HTTP: The host attribute can now be set undef in order to suppress
this header for HTTP/1.0 requests.
- Net::HTTP: The default Host: header does not include the port number if
it is the default (80 for plain HTTP). Some servers get confused by this.
- Net::HTTP: Ignore bogus Content-Length headers. Don't get confused by
leading or trailing whitespace.
- LWP::Protocol::http: More efficient sending of small PUT/POST requests by
trying harder to pass off the whole request in a single call to syswrite.
- lwp-request now give better error messages if you used the -o option
without having the HTML-Tree distribution installed. Also document this
dependency.
5.804 2005-12-06
- HTTP::Message->parse did not work when the first line of the body was
something that looked like a header.
- HTTP::Header::Auth needs HTTP::Headers to be loaded before it replace
its functions.
- LWP::Protocol::nntp improvements by Ville Skyttä :
- Support the nntp: scheme.
- Support hostname in news: and nntp: URIs.
- Close connection and preserve headers also in non-OK responses.
- HEAD support for URIs identifying a newsgroup.
- Comment spelling fixes.
- Fix quotes in Net::HTTP example.
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=283916
- Detect EOF when expecting a chunk header. Should address the warnings
shown in http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286775
- WWW::RobotRules: Improved parsing of not strictly valid robots.txt files
contributed by .
- Makefile.PL: Set name to LWP so that the .packlist ends up in the
expected place.
5.803 2004-12-11
- HTTP::Message: $mess->decoded_content sometimes had the side effect of
destroying $mess->content.
- HTTP::Message: $mess->decoded_content failed for
"Content-Encoding: deflate" if the content was not in the zlib-format
as specified for the HTTP protocol. Microsoft got this wrong, so we
have to support raw deflate bytes as well.
- HTTP::Response->parse don't require the protocol to be specified any more.
This allows HTTP::Response->parse($resp->as_string) to round-trip. Patch
by Harald Joerg .
- HTTP::Response: $resp->base might now return undef. Previously it would
croak if there was no associated request Harald Joerg
- HTML::Form now support for check- and radio boxes. Dan Kubb
- Make HTTP::Daemon subclassable, patch by Kees Cook .
- lwp-download allow save directory to be specified. Radoslaw Zielinski
- lwp-download will validate filename derived from server controlled data
and will fail if something looks not quite right.
5.802 2004-11-30
- The HTTP::Message object now has a decoded_content() method. This will
return content after Content-Encodings and charsets have been decoded.
- Compress::Zlib is now a prerequisite module.
- HTTP::Request::Common: The POST() function created an invalid
Content-Type header for file uploads with no parameters.
- Net::HTTP: Allow Transfer-Encoding with trailing whitespace.
- Net::HTTP: Don't allow empty content to be treated as a valid HTTP/0.9
response.
- File::Protocol::file: Fixup directory links in HTML generated for
directories. Patch by Moshe Kaminsky .
- Makefile.PL will try to discover misconfigured systems that can't talk to
themselves and disable tests that depend on this.
- Makefile.PL will now default to 'n' when asking about whether to install
the "GET", "HEAD", "POST" programs. There has been too many name
clashes with these common names.
5.801 2004-11-12
- HTTP::Message improved content/content_ref interaction. Fixes
DYNAMIC_FILE_UPLOAD and other uses of code content in requests.
- HTML::Form:
- Handle clicking on nameless image.
- Don't let $form->click invoke a disabled submit button.
- HTTP::Cookies could not handle a "old-style" cookie named "Expires".
- HTTP::Headers work-around for thread safety issue in perl <= 5.8.4.
- HTTP::Request::Common improved documentation.
- LWP::Protocol: Check that we can write to the file specified in
$ua->request(..., $file) or $ua->mirror.
- LWP::UserAgent clone() dies if proxy was not set. Andy Lester
- HTTP::Methods now avoid "use of uninitialized"-warning when server
replies with incomplete status line.
- lwp-download will now actually tell you why it aborts if it runs out of
disk space of fails to write some other way.
- WWW::RobotRules: only display warning when running under 'perl -w' and
show which robots.txt file they correspond to. Bill Moseley.
- WWW::RobotRules: Don't empty cache when agent() is called if the agent
name does not change. Ville Skyttä .
5.800 2004-06-16
- HTML::Form will allow individual menu entries to be disabled. This was
needed to support and
foo.
- HTML::Form now avoids name clashes between the and
attributes.
- HTML::Form now implicitly close elements when it sees another
input or . This is closer to the MSIE behaviour.
- HTML::Form will now "support" keygen-inputs. It will not calculate a key
by itself. The user will have to set its value for it to be returned by
the form.
- HTTP::Headers now special case field names that start with a ':'. This is
used as an escape mechanism when you need the header names to not go
through canonicalization. It means that you can force LWP to use a
specific casing and even underscores in header names. The ugly
$TRANSLATE_UNDERSCORE global has been undocumented as a result of this.
- HTTP::Message will now allow an external 'content_ref' to be set. This
can for instance be used to let HTTP::Request objects pick up content
data from some scalar variable without having to copy it.
- HTTP::Request::Common. The individual parts will no longer have a
Content-Length header for file uploads. This improves compatibility
with "normal" browsers.
- LWP::Simple doc patch for getprint. Yitzchak
Scott-Thoennes .
- LWP::UserAgent: New methods default_header() and default_headers(). These
can be used to set up headers that are automatically added to requests
as they are sent. This can for instance be used to initialize various
Accept headers.
- Various typo fixes by Ville Skyttä .
- Fixed test failure under perl-5.005.
- LWP::Protocol::loopback: This is a new protocol handler that works like
the HTTP TRACE method, it will return the request provided to it. This
is sometimes useful for testing. It can for instance be invoked by
setting the 'http_proxy' environment variable to 'loopback:'.
5.79 2004-04-13
- HTML::Form now exposes the 'readonly' and 'disabled' attribute for inputs.
This allows your program to simulate JavaScript code that modifies
these attributes.
- RFC 2616 says that http: referer should not be sent with https: requests.
The lwp-rget program, the $req->referer method and the redirect handling
code now try to enforce this. By Ville Skyttä .
- WWW::RobotRules now look for the string found in robots.txt as a case
insensitive substring from its own User-Agent string, not the other way
around. Patch by Ville Skyttä .
- HTTP::Headers: New method 'header_field_names' that return a list of
names as suggested by its name.
- HTTP::Headers: $h->remove_content_headers will now also remove the
headers "Allow", "Expires" and "Last-Modified". These are also part of
the set that RFC 2616 denote as Entity Header Fields.
- HTTP::Headers: $h->content_type is now more careful in removing embedded
space in the returned value. It also now returns all the parameters as
the second return value as documented.
- HTTP::Headers: $h->header() now croaks. It used to silently do nothing.
- HTTP::Headers: Documentation tweaks. Documented a few bugs discovered
during testing.
- Typo fixes to the documentation by Ville Skyttä .
- Updated tests.
5.78 2004-04-07
- Removed stray Data::Dump reference from test suite.
- Added the parse(), clear(), parts() and add_part() methods to
HTTP::Message. The HTTP::MessageParts module of 5.77 is no more.
- Added clear() and remove_content_headers() methods to HTTP::Headers.
- The as_string() method of HTTP::Message now appends a newline if called
without arguments and the non-empty content does not end with a newline.
This ensures better compatibility with 5.76 and older versions
of libwww-perl.
- Use case insensitive lookup of hostname in $ua->credentials. Patch by
Andrew Pimlott .
5.77 2004-04-06
- LWP::Simple did not handle redirects properly when the "Location" header
used uncommon letter casing. Patch by Ward Vandewege .
- LWP::UserAgent passed the wrong request to redirect_ok(). Patch by Ville
Skyttä .
https://rt.cpan.org/Ticket/Display.html?id=5828
- LWP did not handle URLs like http://www.example.com?foo=bar properly.
- LWP::RobotUA construct now accept key/value arguments in the same way as
LWP::UserAgent. Based on patch by Andy Lester .
- LWP::RobotUA did not parse robots.txt files that contained "Disallow:"
using uncommon letter casing. Patch by Liam Quinn .
- WWW::RobotRules now allow leading space when parsing robots.txt file as
suggested by Craig Macdonald . We now also
allow space before the colon.
- WWW::RobotRules did not handle User-Agent names that use complex version
numbers. Patch by Liam Quinn .
- Case insensitive handling of hosts and domain names in HTTP::Cookies.
https://rt.cpan.org/Ticket/Display.html?id=4530
- The bundled media.types file now match video/quicktime with the .mov
extension, as suggested by Michel Koppelaar .
- Experimental support for composite messages, currently implemented by the
HTTP::MessageParts module. Joshua Hoblitt .
- Fixed libscan in Makefile.PL. Patch by Andy Lester .
- The HTTP::Message constructor now accept a plain array reference as
its $headers argument.
- The return value of the HTTP::Message as_string() method now better
conforms to the HTTP wire layout. No additional "\n" are appended to
the as_string value for HTTP::Request and HTTP::Response. The
HTTP::Request as_string now replace missing method or URI with "-"
instead of "[NO METHOD]" and "[NO URI]". We don't want values with
spaces in them, because it makes it harder to parse.
5.76 2003-11-21
- Revised handling of redirects.
- clear our content and content headers if we rewrite request as GET
based on patch by Steven Butler .
- pass $response to redirect_ok()
- Support cpan:-URLs. Try 'lwp-download cpan:src/latest.tar.gz' :)
- Fix test failure in 't/html/form.t' for perl5.005.
5.75 2003-10-26
- Reworked LWP::UserAgent, HTTP::Request and HTTP::Response documentation.
- other documentation tweaks.
5.74 2003-10-23
- Improved lwp-download program:
- set mtime if Last-Modified header reported by server
- better prompts
- avoid warnings when aborted at the wrong time
- Collected all contributions in the AUTHORS file and also added an AUTHORS section to the LWP manpage.
- Style tweaks to all modules. Move POD after __END__ and uncuddled elses.
5.73 2003-10-19
- Takanori Ugai found that 'max_redirect' introduced
in 5.72 was broken and provided a patch for that.
- Not all ftp servers return 550 responses when trying to to RETR a
directory. Microsoft's IIS is one of those. Patch provided by Thomas
Lotterer .
- Some documentation tweaks.
5.72 2003-10-15
- Requests for some non-HTTP URLs would fail if the cookie_jar was enabled.
The HTTP::Cookies::add_cookie_header now ignore non-HTTP requests.
- The new local/http test failed on Windows because of a missing binmode().
- Suppress Client-SSL-Warning warning header when Crypt::SSLeay is able to
verify the peer certificate. Joshua Chamas .
- HTTP::Request::Common::POST did not add a 'Content-Length' header when
the content ended up empty. by Brian J. Murrell.
- Internally generated responses now contain a text/plain part that repeats
the status line. They also have a "Client-Warning" header that can be
used to differentiate these responses from real server responses.
- LWP::UserAgent now deals with 303 and 307 redirects. The behaviour of 302
redirects has also changed to be like 303; i.e. change the method to be
"GET". This is what most browsers do. Tom Hughes
- LWP::UserAgent now implements a 'max_redirect' attribute with a default
value of 7. This should also fix the problem where redirects to the
same URL to get a cookie didn't work. Sean M. Burke .
- NTLM authentication should continue to fail if the Authen::NTLM module
can't be loaded. LWP used to think the scheme was available as soon as
the module stash showed up. Not it looks for the authenticate method to
be defined. Patch by Jan Dubois.
- lwp-download will not try to rename *.tbz and *.tar.bz2 to match the
reported content type. Robin Barker .
- HTTP::Cookies::Netscape documentation fix by Sean M. Burke.
- HTTP::Cookies::Microsoft documentation fix by Johnny Lee.
- The code that tries to avoid installing 'HEAD' on top of 'head' on
systems like Mac OS was further improved to look in
$Config{installscript} instead of $Config{sitebin}. Patch provided by
Ken Williams .
5.71 2003-10-14
- Support open-ended Range: header for ftp requests. Patch by Matthew
Eldridge .
- lwp-request now prints unsuccessful responses in the same way as
successful ones. The status will still indicate failures.
Steve Hay .
- HTML::Form's dump now also print alternative value names.
- HTML::Form will now pick up the phrase after a or
and use that as the name of the checked value.
- HTML::Form's find_input now returns all inputs that match in array
context. Based on patch by Mark Stosberg in
.
- HTTP::Daemon's send_file() method did not work when given a file name.
Patch by Dave W. Smith .
- HTTP::Daemon is less strict about field names in the request headers is
received. The Norton Internet Security firewall apparently likes to
send requests with a header called '~~~~~~~~~~~~~~~'. Further details
in .
- LWP::Protocol::http assumed $1 would be meaningful without testing the
outcome of the match. This sometimes produced an extra garbage
Authentication header. Based on the patch by
in .
- LWP::Protocol::mailto will try harder to locate the sendmail program as
suggested in . Also
let $ENV{SENDMAIL} override the search.
- Patch to enable OS/2 build by Ilya Zakharevich.
5.70 2003-10-13
- File::Listing::apache by Slaven Rezic
- HEAD requests now work properly for ftp: URLs.
Patch by Ville Skyttä .
- LWP::UserAgent: protocols_allowed() and protocols_forbidden() are now
case-insensitive. Patch by Ville Skyttä .
- Avoid warning from HTTP::Date on certain invalid dates. Patch by
David Dick .
- HTML::Form::param() is an alternative interface for inspecting/modifying
the form values. It resembles the interface of CGI.
- HTML::Form docs updated by Martin Thurn .
- HTML::Form will treat any unknown input types as text input. This appears
to be what most browsers do.
- HTML::Form::parse() can now take a HTTP::Response object as argument.
- The "checkbox" and "option" inputs of HTML::Form can now be turned on with
the new check() method.
- The inputs of HTML::Form can now track alternative value names and allow
values to be set by these names as well. Currently this is only
supported for "option" inputs.
- HTML::Form's dump() method now print the name of the form if present.
5.69 2003-01-24
- Include lwptut.pod contributed by Sean M. Burke C.
- The lwp-request aliases GET, HEAD, POST where installed when no program
should be. Fixed by David Miller .
- lwp-rget --help don't print double usage any more.
- HTTP::Header::Util is now more reluctant to put quotes around token vals.
- Net::HTTP: Avoid warning on unexpected EOF when reading chunk header.
5.68 2003-01-02
- Fix test failure for t/html/form.t when running under perl-5.8.0.
5.67 2003-01-01
- HTTP::Cookies::Microsoft contributed by Johnny Lee .
This module makes it possible for LWP to share MSIE's cookies.
- HTML::Form supports file upload better now. There are some new methods on
that kind of input; file(), filename(), content() and headers().
- Removed unfinished test that depended on Data::Dump.
- Net::HTTP avoids exceptions in read_response_headers() with laxed option.
It now always assumes HTTP/0.9 on unexpected responses.
- HTML::Form documentation reworked.
5.66 2002-12-20
- Various patches from Sean M. Burke. Most of them to match up LWP with
the "Perl & LWP" book.
- LWP::DebugFile module contributed by Sean.
- LWP::Authen::Ntml contributed by James Tillman.
- HTTP::Daemon patch for Alpha by
- The format_chunk() and write_chunk() methods of Net::HTTP did not work.
Bug spotted by Yale Huang .
- The Client-Peer response header is back.
5.65 2002-05-31
- Make HTTP::Date compatible with perl 5.8.
- Try to avoid to default to overwriting /usr/bin/head on MacOS X when the
perl install prefix is /usr/bin.
- HTTP::Cookies fix for parsing of Netscape cookies file on MS Windows.
Patch by Sean M. Burke .
- HTTP::Negotiate doc patch from Edward Avis .
5.64 2002-02-09
- Simplified the Makefile.PL:
- the scripts are not longer *.PL files
- don't try to make symlinks for GET, HEAD, POST as that has not
worked for a long time
- the GET, HEAD, POST aliases for lwp-request should now work on Win
- HTTP::Cookies:
- added 'clear_temporary_cookies'; Mike Schilli .
- trailing space in old cookie parameters not ignored; Ivan Panchenko
- protect against $SIG{__DIE__}; Adam Newby
- LWP::Authen::Digest:
- abort digest auth session if fails repeatedly with the same user/pass
- MacOS portability patches to test suite by Chris Nandor .
5.63 2001-12-14
- HTTP::Negotiate: Deal with parameter names in a case insensitive way. Put
a little weight on the order of features in the Accept headers.
- LWP::UserAgent: make sure that the 'request' attribute is always set on
the returned response.
- LWP::Protocol::http will now allow certain bad headers in the responses
it reads. The bad headers end up in the header 'Client-Junk'.
- Net::HTTP new options to the 'read_response_headers' method. The option
'laxed' will make it ignore bad header lines. The option 'junk_out' can
be used to pass in an array reference. Junk header lines are pushed
onto it.
- Net::HTTP::Methods: fixed the internal zlib_ok() to also return the
correct value the first time.
- LWP::Protocol::http: Ensure that we don't read until select has said it's
ok since we have put the socket in non-blocking mode. Previously this
could happen if you set the 'timeout' attribute of the user agent to 0.
- LWP::Authen::Digest now use Digest::MD5 instead of MD5.
- Some adjustments to Makefile.PL to figure out if Compress::Zlib is
available and adjust the test suite accordingly.
5.62 2001-11-21
- The $VERSION of LWP::UserAgent wrapped around. This confused the CPAN
indexer. Bumped the major number to 2 to fix this.
- Net::HTTP did not work well on perl5.003. The PeerHost argument to
IO::Socket::INET was not recognized, so we had to use PeerAddr instead.
The syswrite() method also required a length argument.
- Net::HTTP did not deal with transfer encoding tokens in a case-insensitive
way. Patch by Blair Zajac .
- The jigsaw-chunk test failed on MacOS because "\n" is different. Patch
by Chris Nandor .
5.61 2001-11-16
- LWP::Protocol::http did not invoke its _fixup_header method. The result
was that the 'Host' header was wrong when going through a proxy server.
- The live Google test is gone. They blocked us.
- The guts of Net::HTTP has moved to Net::HTTP::Methods.
- Net::HTTP now has limits on the size of the header; set by default.
- New module Net::HTTPS.
- Documentation tweaks.
- HTTP::Headers: The 'remove_header' method now return the values of the
fields removed as suggested by Blair Zajac . Also a
typo fix by Blair.
- HTTP::Message: The delegation via &AUTOLOAD should be slightly faster
now. It will install a real forwarding function the first time it is
called for each HTTP::Headers method.
- LWP::UserAgent: Don't forward 'Cookie' headers on redirect. Patch by
Steve A Fink .
- LWP::Protocol::http has been reorganized to make it simpler to subclass
it. Other minor changes to it include:
- Client-Warning is gone
- Client-Request-Num renamed to Client-Response-Num
- A 'Transfer-Encoding' header is rewritten into a
'Client-Transfer-Encoding' header.
- LWP::Protocol::https is completely redone.
5.60 2001-10-26
- Made HTTP/1.1 the default. The old HTTP/1.0 module has been renamed as
LWP::Protocol::http10. There is an environment variable;
PERL_LWP_USE_HTTP_10 that can be set to have LWP use the old drivers.
- Deal with "100 continue" responses even when not requested by and Expect
header in the request. MS IIS is eager to send this kind of response.
- For HTTP/1.1 over SSL there was a problem with the underlying SSL
libraries if the socket was configured to non-blocking mode. Disable
this for https. By Michael Thompson
- Support the Range header for ftp:// reqs. David Coppit .
- Rearrange Bundle::LWP on request from Chris Nandor.
- HTTP::Cookies: Allow a domain like .foo.com match host "foo.com".
By Alexandre Duret-Lutz
- For redirects make sure Host header is not copied to the new request.
- The HTML::HeadParser is not loaded until actually needed.
- Net::HTTP should now work with perl5.005 by a simple tweak to
require IO::Socket::INET
- WWW::RobotRules::AnyDBM: Clear database on open. Some DBM implementations
don't support the O_TRUNC flag properly. Radu Greab .
5.53_97 2001-09-19 (TRIAL)
- LWP::Protocol::http11: fix socket leak. Because we managed to set up a
circular reference within the sockets objects they stayed around forever.
- LWP::UserAgent: Split up simple_request into prepare_request and
send_request. Patch contributed by Keiichiro Nagano
- LWP::Protocol::http: Pass all header data to LWP::Debug::conns. Martijn.
- LWP::UserAgent: Sean fixed a Cut&Paste error.
- HTTP::Cookies: avoid pack("c",...) warning from bleadperl.
5.53_96 2001-08-27 (TRIAL)
- HTTP/1.1 support also for https. by Doug MacEachern
- The HTTP/1.1 modules are now enabled by default. Hope that will give them
more testing than they otherwise would have gotten.
- HTTP::Daemon's accept now has same behaviour as IO::Socket's accept in
list context. Fixed by Blair Zajac .
- More argument sanity checking in HTTP::Request->uri and
LWP::UserAgent->simple_request. Patch by Sean M. Burke.
- HTTP::Protocol::http. short writes. Norton Allen
- HTTP::Protocol::http11: Deal with newlines in header values.
- Net::HTTP: call sysread (instead of xread) when more data is required.
5.53_95 2001-08-06 (TRIAL)
- Fix HTTP::Cookies where there is a mix of Set-Cookie and Set-Cookie2
headers. In that case we used to ignore all Set-Cookie headers. Now we
only ignore those Set-Cookie headers that reference the same cookie as
a Set-Cookie2 header.
- HTTP::Request, HTTP::Response will by default now use "URI" class, instead
of "URI::URL", when constructing its URI objects. This has a potential
for breaking existing code as URI::URL objects had some extra methods
that external code might depend upon.
- Patches by Sean M. Burke:
- Fix treatment of language tags in HTTP::Negotiate
- Avoid trailing newline in $response->message
- HTTP::Response clarifications
- LWP::Simple deals with non-absolute redirects "correctly" now.
- Net::HTTP does not try to load Compress::Zlib until it is needed.
- Net::HTTP documentation has been updated.
5.53_94 2001-05-05 (TRIAL)
- Sean M. Burke's update to LWP::UserAgent:
- updated redirect_ok behaviour
- new convenience methods: get/head/post/put
- protocols_allowed/protocols_forbidden
- LWP::Protocol::nogo (new module)
- Added digest auth test against Jigsaw
- Fixed a 'use of uninitialized'-warning in the handling of digest auth.
- Net::HTTP updates:
- new option: SendTE
- support transfer-encoding 'deflate' and 'gzip' (when Compress::Zlib
is available).
- new methods: format_chunk, format_chunk_eof
- use -1 (instead of "0E0" as signal that no data was available,
but this was not EOF).
5.53_93 2001-04-28 (TRIAL)
- Makefile.PL now asks some questions
- Added live tests for the new HTTP/1.1 support
- LWP::MemberMixin: make it possible to set a value to the 'undef' value.
- Net::HTTP:
- transparent support for 'deflate' and 'gzip' transfer encodings
(need to have the Compress::Zlib module installed for this to work).
5.53_92 2001-04-25 (TRIAL)
- LWP::Protocol::ftp now support keep-alives too. The command connection
will stay open if keep-alives are enabled.
- LWP::Protocol::http11 various fixes:
- chunked request content did not work
- monitor connection while sending request content
- deal with Expect: 100-continue
- LWP::RobotUA: Protect host_port call. Not all URIs have this method.
5.53_91 2001-04-20 (TRIAL)
- Introduced LWP::ConnCache module. Works similar to HTTP::Cookies, it that
it takes effect if associated with the $ua.
- The handling of $ua->max_size changed to make 0 mean 0 (not unlimited). A
value of undef means no limit. The X-Content-Base header is gone. I
hope nobody relies on it. It might come back if people start to scream.
There is a new Client-Aborted header instead.
- The Range header generated for $ua->max_size had an off-by-one error. A
range of "0-1" means 2 bytes.
- The LWP::UserAgent constructor now takes configuration arguments.
- Keep-alive and the new HTTP/1.1 module can now be simply enabled with
something like: LWP::UserAgent->new(keep_alive => 1);
- New method $ua->conn_cache to set up and access the associated connection
manager.
- If the string passed to $ua->agent() ends with space then the
"libwww-perl/#.##" string is automatically appended.
- New method $ua->_agent
- Passing a plain hash to $ua->cookie_jar automatically loads HTTP::Cookies
and initialise an object using the hash content as constructor arguments.
- LWP::Protocol::http11 now use the conn_cache of the $ua.
- LWP::Protocol::http11 now added a few new Client- headers.
- LWP::Protocol avoid keeping the connection alive if $ua->max_size limit
prevents the whole body content from being read.
- Net::HTTP updates:
- new methods: write_chunk(), write_chunk_eof()
- reset state properly when a new body is read.
- always set read buffer empty on eof
- doc update
- WWW::RobotRules patch by Liam Quinn :
- Always qualify netloc with port.
- Reverse User-Agent substring matching.
5.53_90 2001-04-18 (TRIAL)
- Note: This is a developer only release. Not for production use.
- LWP::Protocol::http11 now does keep-alives by default. Still need to
figure out what interface to provide at the $ua level.
- LWP::Protocol::http11 deals with CODE content in request.
- Net::HTTP updated:
- added format_request() method
- added _rbuf and _rbuf_length methods
- read_response_headers does not return protocol version any more.
- peer_http_version method did not work because of typo.
- documentation added
- New module Net::HTTP::NB. This is a Net::HTTP subclass that is better
suited for multiplexing as it is able to do no-blocking reads of headers
and entity body chunks.
- HTTP::Request: Protect $request->uri against evil $SIG{__DIE__} handlers.
- Some reorganisation in how stuff is passed from $ua to protocol object.
The $ua is now passed in so protocol objects might store start in it.
- The $ua->max_size default is now 0.
- The $ua->clone method avoids sharing of proxy settings between the old
and the new.
- This file is renamed to 'Changes' (used to be 'ChangeLog').
5.53 2001-04-10
- LWP::Simple::get() could sometimes return nothing on failure in list
context. Now it always returns 'undef'.
- HTTP::Cookies does not request 2 dots on domain names any more. New
option to hide the Cookie2 header. Cookie2 header now quote the version
number. Updated reference to RFC 2965.
- Support for embedded userinfo in http proxy URIs. It means that you know
can set up your proxy with things like:
http_proxy="http://proxyuser:proxypass@proxyhost:port" Patch by
John Klar .
- Experimental HTTP/1.1 support. New module called Net::HTTP that provide
the lower level interface and a LWP::Protocol::http11 module that
builds on it. The HTTP/1.1 protocol module must be loaded and
registered explicitly, otherwise the old and trustworthy HTTP/1.0
module will be used.
- LWP::Protocol::GHTTP will try to use the get_headers() methods so that it
can actually extract all the headers.
5.52 2001-03-29
- HTTP::Header: new method $h->init_header() that will only set the header
if it is not already set. Some shuffling around in the code.
- LWP::UserAgent will not override 'User-Agent', 'From' or 'Range' headers
if they are explicitly set in the request passed in.
- HTML::Form tries to optimize parsing be restricting the tags that are
reported by HTML::Parser. Will need HTML::Parser v3.19_93 or better for
this to actually have any effect.
- LWP::Protocol::ftp now deals with path parameters again. It means that
you can append ";type=a" to ftp-URI and it will download the document
in ASCII mode.
- If the server output multiple Location headers on a redirect, ignore all
but the first one.
- Extract cookies failed on request URIs with empty paths. This was only
triggered if you used URI objects directly in scripts.
- This change was actually part of 5.51: Fix qop="auth" handling for Digest
authentication. Patch by Dave Dunkin .
5.51 2001-03-14
- SECURITY FIX:
If LWP::UserAgent::env_proxy is called in a CGI environment, the
case-insensitivity when looking for "http_proxy" permits "HTTP_PROXY"
to be found, but this can be trivially set by the web client using the
"Proxy:" header. The fix applied is that $ENV{HTTP_PROXY} is not longer
honored for CGI scripts. The CGI_HTTP_PROXY environment variable can be
used instead. Problem reported by Randal L. Schwartz.
- NOTE: It is recommended that everybody that use LWP::UserAgent (including
LWP::Simple) in CGI scripts upgrade to this release.
- Explicit setting of action on HTML::Form had no effect because of a code
typo. Patch by BooK .
- HTTP::Daemon: The CONNECT method need special treatment because it does
not provide a URI as argument (just a "hostname:port"). The non-upward
compatibility warning is that you must now call $request->url->host_port
to get the host/port string for CONNECT, rather than calling
$request->url and using the entire string. Based on patch from
Randal L. Schwartz
- HTTP::Daemon: Create self URL based on $self->sockaddr. This works better
when LocalAddr is used to specify the port number. Based on patch from
Ben Low .
- Avoid potential ' chunk 1' messages at the end of the
response 'message'.
5.50 2001-01-12
- Fix for test cases that failed because of URI-1.10 now encode space as '+'
instead of '%20. Patch by Christian Gilmore .
- Makefile.PL: Require URI-1.10.
- HTTP::Daemon now accepts any non-space character as method name on the
request line. It used to fail on methods like "M-POST" because it only
allowed \w-chars.
- HTTP::Date now allow fractional seconds in ISO date formats. Based on
patch from Mark D. Anderson
- HTTP::Request::Common will now calculate Content-length even if
$DYNAMIC_FILE_UPLOAD is set. Lindley, Lee T
5.49 2000-12-31
- HTML::Form: Use croak() instead of die. Implement $f->possible_values.
Avoid use of undef value warnings.
- HTTP::Cookies: fix epath issue. Make it work for URI::http as the
uri-attribute of HTTP::Request object
- HTTP::Date: Allow ignored timezone info in parenthesis. Patch by
Sander van Zoest .
- Fix calculation of non-GMT timezones (wrong sign). Patch by
KONISHI Katsuhiro .
- HTTP::Response: Let $res->base() absolutize the URI. Based on bug report
from Hans de Graaff .
- Fixed minor doc typos in HTTP::Headers::Util and LWP::UserAgent.
- HTTP::Request::Common: Support boundary spec from client.
- LWP::Simple: Avoid trivial_http_get when @ in authority part of URI
- LWP::Authen::Digest: Need query in URI param.
- LWP::Protocol::http: unescape user/pass if they are specified in the URI.
- Added LWP::Protocol::GHTTP. This allow LWP to use the HTTP::GHTTP module
as the low level HTTP driver.
5.48 2000-04-09
- README.SSL update by Marko Asplund
- Added cookie example to lwpcook.pod
- HTTP::Date::str2time returns undef on failure instead of an empty list as
suggested by Markus B Krüger
- $request->uri($uri) will now always store a copy of the $uri.
- HTTP::Status: Added status codes from RFC 2616 and RFC 2518 (WebDAV)
- LWP::RobotUA will not parse robots.txt unless content type and content
sample looks right.
- LWP::UserAgent: Deal with multiple WWW-Authenticate headers. Patch by
Hugo
- $ua->proxy can now return the old proxy settings without destroying the
old one. Based on patch by Benjamin Low
- LWP::Protocol::http update
- don't terminate header parsing on bad headers
- extra_sock_opts
- preparations for keep alive support
- method CONNECT
- WWW::RobotRules deal with various absolute URIs in the disallow lines.
- Makefile.PL: Make sure we have HTML::TokeParser
- Clean test on VMS by Charles Lane .
5.47 1999-11-16
- Added HTML::Form to the distribution.
- LWP::Protocol::ftp: Make it URI.pm compatible. We broke it in 5.45.
- LWP::Protocol::http: Kill any Connection header
- LWP::MediaTypes: Fixed builtin html/text mapping. Added bz2 to suffixEncoding
5.46 1999-10-28
- Updated mailing list address
- Avoid warnings for lwp-request -t
- referrer as alternative spelling for referer as suggested by tchrist.
- More conservative selection of boundary for multipart messages in
&HTTP::Request::Common::POST.
- LWP::MediaTypes can now export &read_media_types.
- Spelling corrections from Ben Tilly
5.45 1999-09-20
- The LWP SSL support better explained. Documentation in README.SSL and
lwpcook.pod contributed by Marko Asplund .
- LWP::Protocol::https: Try IO::Socket::SSL if Net::SSL is not available.
- lwp-mirror -t option did not work.
- defined(@ISA) eliminated. Patch by Nathan Torkington
- LWP::Protocol::ftp: Protect against empty path_segments
5.44 1999-06-25
- We require URI-1.03, since this fix some query quoting stuff that
HTTP::Request::Common rely upon.
- 'lwp-request -HUser-Agent:foo' can now be used to set this header too.
- Localize $/ to ensure standard record separator a in HTTP::Cookies
- LWP::UserAgent will now set the Range header in requests if the
$ua->max_size attribute is set.
5.43 1999-05-09
- New lwp-request command line option that allow you to put any header into
the request (-H).
- New HTTP::Date because of Y2K-problems with the old one. It refused to
parse the ftp-listing (ls -l) dates missing year. Additional entry
point is parse_date(). This function avoid any limitations caused by
the time-representation (seconds since epoch).
- Y2K fix to t/base/cookies.t. Netscape's original cookie example expires
at 09-Nov-99.
- binmode() in LWP::Protocol::file: Matt Sergeant
5.42 1999-03-20
- MacOS patches from Paul J. Schinder
- Documentation patch from Michael A. Chase
- PREREQ_PM patch from Andreas Koenig
- LWP::Simple::head fix by Richard Chen
- "LWP fails with PerlEXE"-patch from Gurusamy Sarathy
- Allow "." in HTTP header names: Marc Langheinrich
- Fixed reference to $uri->netloc in lwp-request
- Cute animation in lwp-download
5.41 1998-11-19
- HTTP::Cookies provide better Netscape cookies compliance. Send back
cookies to any port, and allow origin host name to be specified as
domain, and still be treated as a domain. Patch from Andreas
Gustafsson .
- HTTP::Cookies now ignore the Expires field in Set-Cookie, if the date
provided can't be parsed by HTTP::Date.
- HTTP::Daemon will lowercase the hostname returned from
Sys::Hostname::hostname(). This avoid some test failures in the test
suite for people with upper- or mixed-cased hostnames.
- LWP::Protocol::gopher: IO::Socket::INET ctor did not specify
Proto => 'tcp'. This made it less portable to older IO::Socket versions.
- No programs installed when you build the Makefile with
'perl Makefile.PL LIB=/my/lib'
- LWP bundle mention Digest::MD5 instead of MD5
- headers-auth.t test suite bug triggered by perl5.005_5x. Patch by
Albert Dvornik
- The local/http.t test actually did try to unlink("."). This was very
confusing on systems where it succeed.
5.40_01 1998-10-12 (TRIAL)
- Unbundled URI::URL modules. You now have to install the URI.pm module in
order to get libwww-perl working.
- Made library URI.pm compatible. Made all URI object instantiations based
on $HTTP::URI_CLASS variable.
- New lwp-rget option: --referer. INOUE Yoshinari
- One more binmode() to HTTP::Daemon: by Markus Laker
5.36 1998-08-04
- The lwp-download script will call $ua->env_proxy now.
- The lwp-request script allows content types (specified with the -c option)
with optional parameters like: multipart/mixed; boundary="--".
- LWP::UserAgent will lowercase all authentication parameter names before
passing it to the authentication module. Previous releases ignored
parameters like; Realm="Foo" (because Realm contained upper case
letters).
- LWP::Protocol::ftp test for If-Modified-Since was wrong.
- How the $url->abs method works can now be configured with the global
variables $URI::URL::ABS_ALLOW_RELATIVE_SCHEME and
$URI::URL::ABS_REMOTE_LEADING_DOTS.
- The anonymous password guesser for ftp URLs will now call the external
`whoami` program any more. Patch by Charles C. Fu .
- LWP::Protocol::http now allow dynamic requests without any Content-Length
specified when Content-Type is multipart/*
- HTTP::Request::Common can now upload infinite files. (Controlled by the
$DYNAMIC_FILE_UPLOAD configuration variable.)
5.35 1998-07-10
- More lwp-rget patches from David D. Kilzer .
Adds the following new options: --iis, --keepext, --tolower
- LWP::MediaTypes patches from MacEachern . Adds new
functions: add_type(), add_encoding(), read_media_types()
5.34 1998-07-07
- LWP::Protocol::ftp now try to use the MDTM command to support the
Last-Modified response header as well as If-Modified-Since in requests.
Original and final patch by Charles C. Fu
- $url->path_components will not escape "." any more.
- WWW::RobotRules will now work for Mac text files too (lines delimited by
CR only). Patch by Olly Betts
- lwp-rget support links too.
5.33 1998-05-07
- LWP::Simple::get() did try to handle too many of the 3xx codes as
redirect when it bypasses full LWP.
- LWP::UserAgent->mirror will now use utime(2) to set the file modification
time corresponding to the Last-Modified header.
- LWP::Protocol::http will not modify the HTTP::Request that it is
processing. This avoids sticky Host header for redirects.
- URI::Heuristic and lwp-download documentation update.
5.32 1998-04-15
- Much improved HTTP::Daemon class. We now support persistent connections.
Changes include:
- $c->get_request can be told to return after reading and parsing
headers only.
- $c->reason (new method)
- $c->read_buffer (new method)
- $c->proto_ge (new method)
- $c->force_last_request (new method)
- $c->send_response now support CODE reference content and will use
chunked transfer encoding for HTTP/1.1 clients.
- expanded the documentation.
5.31 1998-04-10
- Makefile.PL now checks that HTML::HeadParser is present.
- Updated HTTP::Cookies according to draft-ietf-http-state-man-mec-08.txt
It now supports the .local domain and value less 'port' attribute in
the Set-Cookie2 header.
- HTTP::Headers update:
- $h->content_type now always return a defined value
- $h->header($field) will now concatenate multi-valued header fields
with "," as separator in scalar context.
- HTTP::Request::Common update:
- used to destroy the content of the hash/array arguments passed to
its constructor functions.
- allow a hash reference to specify form-data content.
- you can override Content-Disposition for form-data now.
- set content-encoding for files if applicable
- default boundary string is now always "--000"
- LWP::UserAgent will not follow more than 13 redirects automatically.
5.30 1998-04-01
- Unbundled the following modules:
* HTML-Parser (HTML::Parser, HTML::Entities, HTML::LinkExtor,...)
* HTML-Tree (HTML::Element, HTML::TreeBuilder,...)
* Font-AFM (Font::AFM, Font::Metrics::*)
* File-CounterFile
- Simplified internals of HTTP::Headers. Hopefully, nobody will notice.
- New modules HTTP::Headers::Auth, HTTP::Headers::ETag that adds
additional convenience methods to the HTTP::Headers class.
- Removed split_etag_list() from HTTP::Headers::Util, in the hope that
nobody had starting using it.
5.22 1998-03-24
- HTTP::Cookies made more compatible with Netscape cookies. Allow the domain
to match host, allow dots in the part of the hostname not covered by
domain. Don't quote the cookie value even when it contains non-token
chars. Based on patch from Kartik Subbarao .
- Updated HTTP::Status to reflect .
RC_MOVED_TEMPORARILY renamed to RC_FOUND. Added codes
RC_TEMPORARY_REDIRECT (307) and RC_EXPECTATION_FAILED (417). Slightly
more documentation too.
- The split_header_words() function HTTP::Headers::Util could go into
infinite loop on some header values. Implemented split_etag_list() too
Added more documentation and test script for this module.
- LWP::Simple now switch to full LWP implementation even for systems that
force all environment keys to be upper case. Modification suggested by
Dale Couch .
- LWP::UserAgent allows redirects to a relative URL with scheme to be made.
Suggested by Chris W. Unger .
- Applied dtd2pm.pl patches from . It can now extract
information from the HTML40.dtd
5.21 1998-03-12
- lwp-rget patches from David D. Kilzer
(modified by Gisle). Support the --hier and the --auth options and
s.
- File::CounterFile protect against bad $/ and $\ by Frank Hoehne.
- File::Listing used "next" when return was more appropriate. Patch
by erik@mediator.uni-c.dk.
- HTML::Element support for multiple boolean attributes for a single element.
Patch by Philip Guenther.
- Can set $HTTP::Headers::TRANSLATE_UNDERSCORE to FALSE value to suppress
tr/_/-/ of header keys.
- LWP::Protocol::http won't initialize the Host header if it's already set.
- LWP::Protocol::http did not handle responses with no header lines
correctly. Patch by Daniel Buenzli
- $url->rel() handles path segments without leading "/" better.
5.20 1998-02-13
- Fixed the "500 Offset outside string" bug that affected perl <= 5.004_03
- Fixed a documentation typo. by Michael Quaranta
- HTTP::Date: Protect against croaking from timegm/timelocal.
5.19 1998-01-26
- HTML::Parser does not call $self->text() callback for empty text anymore.
- LWP::Protocol::https was noisy when connections failed and the script was
running with '-w' (noise inherited from IO::Socket::INET)
- $ua->use_alarm(BOOL) now gives a warning if running with -w
5.18_05 1998-01-20 (TRIAL)
- HTTPS support based on my Crypt-SSLeay module. The Net-SSLeay module is
not supported any more.
- lwp-request documentation typo spotted Martijn Koster.
- Removed superfluous \\ in the URI::Escape regex. Spotted by Martijn.
- File::Listing now handles timezones correctly.
- Added $VERSION to modules that was missing it.
- Added 'use strict' to several modules that was missing it.
- LWP::Protocol::http now adds the Client-Peer header to responses and has
hooks for more callbacks.
- LWP::Protocol::https adds Client-SSL-Cipher, Client-SSL-Cert-Subject and
Client-SSL-Cert-Issuer headers to the response. The requests can also
be made conditional based on the peer certificate using the
If-SSL-Cert-Subject header in requests.
- HTML::Parse is back. (It was even used in lwpcook.pod)
5.18_04 1997-12-17 (TRIAL)
- Makefile.PL fix based on report from Pon Hwa Lin
- lwp-request will now print the res code message with -s and -S options.
- Hide IO::Socket::INET noise when running under -w
- Don't set 'Content-Length: 0' in HTTP requests.
- LWP::Protocol::http now calls LWP::Debug::conns again
5.18_03 1997-12-16 (TRIAL)
- Got rid of alarms() and replaced LWP::Socket with IO::Socket::INET.
- New protocol implementations for http, https, gopher, nntp.
- $ua->use_alarm() is now a noop.
- LWP::Protocol::ftp patch from Tony Finch .
- Removed deprecated modules from the distribution; HTML::Parse,
LWP::Socket, LWP::SecureSocket, LWP::IO, LWP::TkIO.
5.18 1997-12-12
- HTTP authorization patches from Tony Finch . Allows
"user:pass@" in HTTP URLs.
- HTML::Parser patch by Brian McCauley . Pass
original text to end() method.
- The HTML::Parser->netscape_buggy_comment method is deprecated. Use
HTML::Parser->strict_comment instead. The default value has changed
with the name.
- Some HTML::Parser optimization tweaks.
- New module named HTML::Filter
- Updated HTTP::Headers to the latest HTTP spec. Added knowledge about the
"Trailer", "Expect", "TE", "Accept-Range" headers. "Public" header
is gone.
- Added some more header convenience methods: if_unmodified_since,
content_language, and proxy_authorization methods.
- HTTP::{Request,Response}->clone can handle subclasses now.
- HTTP::Request->url() can now undefine the URL.
- HTTP::{Request,Response}->as_string format looks more like the HTTP
protocol formatting now. Dashed lines above and below is gone.
- Documented HTTP::Response->status_line method
- Compressed HTML::Response->error_as_HTML output
- HTTP::Status updated to latest HTTP spec. Added
RC_REQUEST_RANGE_NOT_SATISFIABLE (416)
5.17 1997-12-02
- All authentication handling moved out of LWP::UserAgent and into
LWP::Authen::Basic and LWP::Authen::Digest. We now also support
PROXY_AUTHENTICATION_REQUIRED responses.
- HTML::Formatter will always add a blank line for .
- Avoid use of uninitialized value in HTTP::Daemon.
- HTTP::Date allows seconds when recognizing 'ls -l' dates. This allows us
to parse syslog time stamps.
- HTTP::Request::Common::POST allows a hash reference as second argument
(in addition to an array reference).
- LWP::Simple will initialize the $ua if it is exported.
- Various documentation updates.
5.16 1997-11-21
- LWP::Simple::head() would die in array context because str2time was not
imported any more.
- HTTP::Daemon->accept now takes an optional package argument like
IO::Socket->accept does.
- Made HTTP::Request and HTTP::Response subclassable.
- Added Proxy-Authorization example to lwpcook.
5.15 1997-11-06
- New module URI::Heuristic
- The lwp-request script now use URI::Heuristic for it's URL arguments. It
means that 'lwp-request perl' will not get a file called "./perl" but
will fetch the page "http://www.perl.com" or something similar. If you
want to get the file you have to prefix it with "./". Full URLs are
never affected by this.
- LWP::Simple::get() will bypass LWP for simple HTTP requests. This should
make it somewhat faster.
- LWP::RobotUA has a new method called $ua->use_sleep() that controls how
niceness towards the servers are enforced. Previously $ua->use_alarm()
used to control this, but this did not work well on Win32 systems.
- URI::URL::rel() will handle URLs to a fragment within the same document
better. Initial patch from Nicolai Langfeldt .
- HTML::Element don't consider , and optional any more.
- Added lots of modern tags to HTML::AsSubs.
- HTTP::Request::Common will read uploaded files in binmode(). This should
be better for Win32 systems. by .
5.14 1997-10-12
- HTML::Formatter patches from Andreas Gustafsson . The
formatters handling of whitespace is much better now. Thanks!
- HTML::FormatText: can specify margins in the constructor.
- URI::URL: the base will be absolutized internally now.
- URI::URL will take advantage of void context provided by perl5.004. This
means that using $u->path and $u->query should be safer now.
- URI::URL->print_on defaults to STDERR now (used to be STDOUT).
- URI::URL: removed version 3 compatibility stuff ($COMPAT_VER_3).
- $ua->mirror should work better on dosish systems (can not rename when
target file exists).
- Typo in lwp-download prevented it from compiling.
- Some minor documentations typos corrected.
5.13 1997-09-20
- Brand new module called HTTP::Cookies. It stores cookies (Set-Cookie and
Set-Cookie2 headers) from responses and can create appropriate Cookie
headers for requests. It can also share cookie files with Netscape.
- LWP::UserAgent now support the cookie_jar() attribute. When set to an
HTTP::Cookies object, it will automatically manage the cookies sent to
the servers. Off by default.
- New header utility functions in HTTP::Headers::Util.
- Win32 and OS/2 patches for the lwp-xxx utilities. Turn on binary mode
by default (option to turn it off), avoid modifying $0, and don't be
confused about suffixes in the script names. Contributed by Ben
Coleman
- OpenVMS patch for Font:AFM by Brad Hughes
5.12 1997-09-05
- decode_entities() would sometimes introduce ";" after things that looked
like they were entities.
- HTML::LinkExtor knows about
- Patch from Gary Shea that makes the tests work even
if perl is not called "perl"
- HTTP::Date handles 12:00PM correctly now. Patch from William York
- HTTP::Request::Common don't quote the boundary string for
multipart/form-data messages any more.
- Font::AFM works for encodings where .notdef is defined to have some size.
Documentation and efficiency update.
5.11 1997-08-06
- Perl version 5.004 is now required for libwww-perl.
- Win32 patches from Gurusamy Sarathy . Now passes
all tests on that platform.
- HTTPS support contributed by Josh Kronengold
- Support hex entities ÿ HTML::Entities::(en|de)code only modify
their argument in void context.
- Fixed formatter bug with tags which did not specify size.
- Better HTML::HeadParser documentation
- Fixed HTML::LinkExtor documentation typo spotted by Martijn.
- HTTP::Request::Common now use CRLF for multipart/form-data
5.10 1997-06-20
- Make '+' a reserved URL character. Decode unescaped '+' as space in
$url->query_form().
- Use $Config{d_alarm} to determine default for $ua->use_alarm()
5.09 1997-06-10
- Removed the MIME modules from the distribution. They are distributed
separately now.
- Added a new module called HTTP::Request::Common
- Improved HTTP::Status documentation. It is now also possible to import
the is_client_error/is_server_error functions.
- LWP::MediaTypes::guess_media_type() can now take an optional HTTP::Header
parameter.
- LWP::Protocol ensures that scheme is legal as module name.
- LWP::Protocol::http is not as strict when trying to verify the method
name. It now also accepts responses without a message on the status line
- WWW::RobotRules::AnyDBM_File: Some DBMs fail to allow multiple opens of
the same file. Patch from Mark James
- Created Bundle::LWP
5.08 1997-04-05
- Made libwww-perl warning compatible with upcoming perl5.004beta2
(aka 5.003_98)
- encode_base64() did not work properly if pos() of the string to encode
was different from 0.
- HTML::Parser was confused about "" when it did not start an end tag.
- HTML::FormatPS will provide ISOLatin1Encoding in its output.
- Calling HTML::LinkExtor->links will clear out old links.
- url()->rel($base) would ignore the $base argument.
- Don't croak() when setting url()->path().
5.07 1997-02-11
- Can limit the size of the response content with $ua->max_size()
- Added time2iso() functions to HTTP::Date.
- Made LWP::Protocol::http more portable to the MacPerl. /./ match
different things on MacPerl.
5.06 1997-01-27
- URI::URL is now compatible with perl5.004 overloading.
- HTML::HeadParser makes X-Meta-Name headers for elements that does
not specify an 'http-equiv' attribute.
- URI::URL::ftp does not die if Net::Domain is not installed and you ask
for an anonymous username or password.
- WWW::RobotRules: The robots.txt parser did not ignore comment lines as
it should.
- LWP::Protocol::http is more forgiving towards servers that return bad
responses.
- Allow "?" before search string in gopher URLs.
- LWP::Protocol::file did not escape funny filenames when generating HTML
directory listings.
- LWP::Protocol::ftp now gets the Content-Encoding correct. 'CODE'
content in PUT requests also work now.
- Relative locations in redirects did not work with URI::URL::strict.
- OS/2 portability patches from Ilya Zakharevich
- LWP::Authen::* patch from Doug MacEachern
- Support experimental data:- URLs
- Some tests (those using HTTP::Daemon) now die more gracefully if IO::*
modules is not installed.
5.05 1996-12-04
- LWP::UserAgent::simple_request: local($SIG{__DIE__}) protects us against
user defined die handlers.
- Use Net::Domain (instead of Sys::Hostname) to determine FQDN. It is used
by URI::URL when it determines anonymous ftp login address.
- lwp-download: New program in the bin directory
- HTML::Parser: Allow '_' in attribute names. This makes it possible to
parse Netscape's bookmarks.html file.
- HTTP::Daemon: Fixed chunked transfer encoding and multipart content in
get_request(). Support HTTP/0.9 clients.
- Don't clobber regex variables when HTTP::Message delegates methods to
the header.
- Base64::decode_base64 now checks that the length input string to decode
is a multiple of 4.
- t/robot/rules-dbm.t clean up better and will use AnyDBM for dumping
- File::CounterFile: $/ strikes again by Andreas König
- File::Listing updates from William York . We can
now parse the MS-Windows ftp server listings.
- HTTP::Date now supports the MS-Windows 'dir' date format. Patch by
William York.
- LWP::MediaTypes::media_suffix will return first type in scalar context.
5.04 1996-10-22
- Added HTTP::Daemon. This is a HTTP/1.1 server class. This means
that libwww-perl no longer is a client library only. The HTTP::Daemon
is also used in the new test suite.
- HTTP::Message support the protocol() method. Used by HTTP::Daemon.
- HTTP::Response can be constructed with a header and content as
argument.
- Typo corrections in the documentation.
- File::Listing::parse_dir accepts "GMT" as timezone now.
- HTML::Parser will call the start() method with two new parameters;
$attrseq, $origtext.
- Integrated HTML::FormatPS patches from Jim Stern
- Class modules don't inherit from AutoLoader any more. They just import
the AUTOLOAD method.
- LWP::Protocol will untaints scheme before loading protocol module.
- Digest does not send "opaque" if it was not present in the request. The
"Extension" header is not returned any more.
- New method: $url->crack that will return a list of the various elements
in a URI::URL.
- WWW::RobotRules did not use the agent() method when determining who we
are. This affected WWW::RobotRules::AnyDBM_File parsing for robots.txt.
Visit count did not increment for WWW::RobotRules::InCore.
5.03 1996-10-01
- Hakan Ardo's persistent robot rules is now part of the standard
distribution. This is still experimental and might change in the
future. It includes the new WWW::RobotRules::AnyDBM_File class and
updates to LWP::RobotUA.
- HTML::Parser now supports buggy Netscape comment parsing. Enable it by
calling $p->netscape_buggy_comment(1). The previous version of the
parser could also (under very unlucky and unlikely circumstances) call
the $self->comment() method several times for the same comment text.
- HTML::Parser: Use new $p->eof to signal end of document instead of
$p->parse(undef).
- HTML::Element::starttag() is now smarter about which quotes it use around
attribute values.
- New HTTP::Response methods: current_age(), freshness_lifetime(),
is_fresh(), fresh_until().
- HTTP::Message: New method ($mess->content_ref) which will return a
reference to the current content.
- URI::URL: New method ($url->rel) which does the opposite of abs().
Example: url("http://host/a/b/c", "http://host/c/d/e")->rel would
return url("../../a/b/c", "http://host/c/d/e"). Thanks, Nicolai
Langfeldt
- URI::URL: $url->query_form can now take array references as value
specification. For instance: $url->query_form(foo => ['bar', 'baz']
- Avoid '"my" variable $var masks earlier declaration in same scope'
warnings in perl5.003_05.
5.02 1996-09-11
- lwp-rget: Initialize proxy settings from environment
- HTML::Entities::encode_entities: Don't encode $ and %
- HTML::LinkExtor::links: Now works when no links were found.
- HTTP::Headers::as_string: Allow \n in header value
5.01 1996-08-01
- Updated ftp protocol module to be compatible with Net::FTP version 2.00
(the version found in libnet-1.00)
- New HTML parser module called HTML::LinkExtor
- Various documentation typo corrections. Thanks, Bob Dalgleish.
- HTML::HeadParser updates 'Content-Base' instead of 'Base'. It also
updates the 'Link' header based on
- HTTP::Headers and HTTP::Status updated according to
draft-ietf-http-v11-spec-06
- HTTP::Headers can now use "_" as alternative to "-" in field names.
- HTTP::Response::base now looks for 'Content-Base', 'Content-Location' and
'Base' headers.
- Avoid warning in LWP::MediaTypes if $ENV{HOME} is not defined.
- The new $ua->parse_head() method can be used to turn off automatic
initialization of response headers from the section of HTML
documents.
- Added eq() method for URI::URL objects
- The HTML::Formatter recovers even if a handle method is not defined for
all tags found during traversal
5.00 1996-05-26
- LWP::Simple::head() now return something useful in scalar context.
- Rewritten the HTML::Parse stuff. Introduced the HTML::Parser class that
will tokenize a HTML document. The rest of the old HTML::Parse
functionality has moved to HTML::TreeBuilder class. Note, that the HTML
stuff is still alpha.
- Implemented HTML::HeadParser. This is a lightweight parser for the
section of a HTML document.
- HTML::Element had problem with presenting things like .
- HTML::Entities: Included additional ISO-8859/1 entities listed in RFC1866.
- HTML::AsSubs exported 'header' instead of 'head'
- We know about a few more of the HTML 3.2 element.
- HTTP::Date had problems with years before 1970, because Time::Local went
into an infinite loop. Check for this.
- Added $header->title method.
- Made $header->authorization_basic return "uname:passwd" in scalar context
- LWP::Protocol::collect() will let the HTML::HeadParser look at the
document content as it arrives. This will initialize headers from
elements like , ... and
.
- Simplified $response->base implementation, because we don't have to look
into the content any more.
- Added -quiet option to lwp-rget
- Typo fixes and some documentation additions.
4.999 1996-05-09
- BETA release for version 5. (5b13)
- Made URI::URL::strict(0) the default. I got tired of all this eval { }
stuff just to recover. The URI::URL::strict'ness also determine if
calling some standard method that happens to be illegal for some
protocol scheme will croak or just be ignored.
- Ensure correct $INPUT_RECORD_SEPARATOR and $OUTPUT_RECORD_SEPARATOR at
places where we <> or print.
- Always localize $_ before any 'while() {}'-loops
- Implemented $protocol->collect_once() and simplified several of the
protocol implementations by using it.
- The HTML parser used to get it wrong if you were unlucky about the
breakup of the text. An example of broken behaviour was this:
$html = parse_html " HTTP::Date
- LWP::MIMEheader --> HTTP::Headers
- LWP::StatusCode --> HTTP::Status
- LWP::Message --> HTTP::Message
- LWP::Request --> HTTP::Request
- LWP::Response --> HTTP::Response
- LWP::MIMEtypes --> LWP::MediaTypes
- HTTP::Date parses ctime format with missing timezone as suggested by Roy
Fielding
- HTTP::Status and LWP::MediaTypes exports their functions by default.
- Split up the URI::URL module. Schemes are implemented by separate files
that are autoloaded when used. Self test moved to "t/uri.t".
- Applied patch from Marc Hedlund
- Update the @header_order according to the August 3rd draft.
- Added Response Header fields: 'Location', 'Public', 'Retry-After',
'Server', and 'WWW-Authenticate'.
- Moved 'unknown header' handling from &scan to &header. The old
implementation was forcing all unknown header-words to begin with an
uppercase (as it should be), but disallowed other uppercase letters.
- updates the status code messages under the August 3rd HTTP/1.0 draft.
'203' became 'Non-Authoritative Information', '303' became 'See Other',
and a new code, '411 Authorization Refused', was added.
- Can remove multiple headers with single removeHeader() call in MIMEheader.
- Can assign multiple field/value pairs in header() method of MIMEheader.
- A field with multiple values is printed as separate values in
MIMEheader::as_string().
- LWP::Response contain new attributes: previous() and request(). These
attributes are updated by the UserAgent.
- Appended \n to some die statements in Socket so that line numbers are
suppressed in error messages.
- Made UserAgent::clone work for reference members
- Check for redirect loops and multiple authorization failures by
examination of the response chain.
- Use "\015\012" instead of "\r\n" in protocol modules. Some systems define
\r and \n differently.
- request program can now handle documents that needs authorization by
prompting the user for username/password. Added new -S option to print
request/response chain.
0.02 1995-07-25
- Included URI::URL in the release
- Incorporated Makemake.PL and VERSION from Andreas Koenig
As a result of this the following things have changed:
- programs in "bin" are extracted from .PL-files
- reintroduced "lib"
- "test" has been renamed as "t"
- test programs in "t" has been made Test::Harness compatible
- we now have a MANIFEST file
- no more need for update_version, make-dist, lwp-install
- Renamed bin/get to bin/request. Links to it are now all upper case.
- Proxy support in bin/request (provided by Martijn Koster)
- UserAgent can now load proxy settings from environment
- LWP::Protocol::ftp is under way but not really finished
- Implemented LWP::Protocol::gopher
- Implemented LWP::Protocol::mailto
- Fixed proxy typo
0.01 1995-07-17
- Don't lose first line of HTTP/0.9 requests
- LWP::Socket use syswrite() for writing
- Added RC_* documentation to LWP::StatusCode
- LWP::Date now use hash to look up month numbers
- Added -f option to "get"
- Untabify
- Added a "TODO" list
- Fixed various typos
- Reorganized directories.
- Moved LWP.pm up.
- Moved file.pm and http.pm into the LWP::Protocol directory.
- Moved LWP out of the lib directory and removed lib.
- Implemented the "get" and "mirror" scripts in the "bin" directory.
- Implemented "install-lwp", "update_version" and "make-dist". The
library version number is found in the VERSION file.
- Always adds 1900 to the year in LWP::Date
- In LWP::MIMEheader: Implemented clone(), removeHeader() and scan()
methods. Reimplemented asString. Removed asMIME(). Moved "Good
Practice" into this file, and reimplemented it.
- Moved "header" and "content" into LWP::Message class. This change
made LWP::Request and LWP::Response much simpler. Made clone()
method actually work.
- LWP::Protocol::implementor does not die if it cannot load package.
- Moved UserAgent convenience methods into LWP::Simple. Made LWP::Simple
export LWP::StatusCode symbols and functions.
- Implemented $ua->isProtocolSupported($scheme) method.
- Nicer directory listing in LWP::Protocol::file.pm
- Rely on URI::URL 3.00 behaviour for $url->full_path
- Library version number now in LWP.pm. You should be able to say
"use LWP 1.0;" if you need at least this version.
- Various cleanups and arranging layout as I like it. Use fooBar-style
(as opposed to foo_bar style) everywhere. This means that
as_string() now is called asString().
- Added more documentation.
- Removed lot of redundant & before function calls.
- $this --> $self
- &collector passes content as a reference, don't want to copy so much
- parameterlist to collect callback has been rearranged
- Response::addContent gets a reference to the data
- Added some callback documentation to UserAgent.pm
- Protocol::file now uses the collector
- Introduced LWP::Simple
- Added basic authentication support
- Added mirroring of single documents
- Change Protocol construction from whacky URL.pm (constructor returns
subclass) to more normal C++'ish way.
- Minor cleanups from printed code inspection
- Added redirection resolution
- Added optional autoloading of protocols
- Separated socket stuff into separate module
- Added HTTP proxy support
- Made alarm handling optional
- Added a LWP::Message for completeness sake
- Added LWP::MemberMixin to reduce code duplication
- Cosmetic changes to LWP::Date
- Renamed LWP::Error to LWP::StatusCode
- Renamed LWP::MIME to LWP::MIMEtype
- Changed the tests to cope with all this
- Changed the socket reading to use sysread. This will have to go into a
module of its own.
- Mentioned on libwww-perl that I had changed the classes around lots.
libwww-perl-6.31/CONTRIBUTING.md 000644 000766 000024 00000010204 13213362654 016424 0 ustar 00ether staff 000000 000000 # HOW TO CONTRIBUTE
Thank you for considering contributing to this distribution. This file
contains instructions that will help you work with the source code.
The distribution is managed with [Dist::Zilla](https://metacpan.org/pod/Dist::Zilla).
This means that many of the usual files you might expect are not in the
repository, but are generated at release time. Some generated files are kept
in the repository as a convenience (e.g. Build.PL/Makefile.PL and META.json).
Generally, **you do not need Dist::Zilla to contribute patches**. You may need
Dist::Zilla to create a tarball. See below for guidance.
## Getting dependencies
If you have App::cpanminus 1.6 or later installed, you can use
[cpanm](https://metacpan.org/pod/cpanm) to satisfy dependencies like this:
$ cpanm --installdeps --with-develop .
You can also run this command (or any other cpanm command) without installing
App::cpanminus first, using the fatpacked `cpanm` script via curl or wget:
$ curl -L https://cpanmin.us | perl - --installdeps --with-develop .
$ wget -qO - https://cpanmin.us | perl - --installdeps --with-develop .
Otherwise, look for either a `cpanfile` or `META.json` file for a list of
dependencies to satisfy.
## Running tests
You can run tests directly using the `prove` tool:
$ prove -l
$ prove -lv t/some_test_file.t
For most of my distributions, `prove` is entirely sufficient for you to test
any patches you have. I use `prove` for 99% of my testing during development.
## Code style and tidying
Please try to match any existing coding style. If there is a `.perltidyrc`
file, please install Perl::Tidy and use perltidy before submitting patches.
## Installing and using Dist::Zilla
[Dist::Zilla](https://metacpan.org/pod/Dist::Zilla) is a very powerful
authoring tool, optimized for maintaining a large number of distributions with
a high degree of automation, but it has a large dependency chain, a bit of a
learning curve and requires a number of author-specific plugins.
To install it from CPAN, I recommend one of the following approaches for the
quickest installation:
# using CPAN.pm, but bypassing non-functional pod tests
$ cpan TAP::Harness::Restricted
$ PERL_MM_USE_DEFAULT=1 HARNESS_CLASS=TAP::Harness::Restricted cpan Dist::Zilla
# using cpanm, bypassing *all* tests
$ cpanm -n Dist::Zilla
In either case, it's probably going to take about 10 minutes. Go for a walk,
go get a cup of your favorite beverage, take a bathroom break, or whatever.
When you get back, Dist::Zilla should be ready for you.
Then you need to install any plugins specific to this distribution:
$ dzil authordeps --missing | cpanm
You can use Dist::Zilla to install the distribution's dependencies if you
haven't already installed them with cpanm:
$ dzil listdeps --missing --develop | cpanm
Once everything is installed, here are some dzil commands you might try:
$ dzil build
$ dzil test
$ dzil regenerate
You can learn more about Dist::Zilla at http://dzil.org/
## Other notes
This distribution maintains the generated `META.json` and either `Makefile.PL`
or `Build.PL` in the repository. This allows two things:
[Travis CI](https://travis-ci.org/) can build and test the distribution without
requiring Dist::Zilla, and the distribution can be installed directly from
Github or a local git repository using `cpanm` for testing (again, not
requiring Dist::Zilla).
$ cpanm git://github.com/Author/Distribution-Name.git
$ cd Distribution-Name; cpanm .
Contributions are preferred in the form of a Github pull request. See
[Using pull requests](https://help.github.com/articles/using-pull-requests/)
for further information. You can use the Github issue tracker to report issues
without an accompanying patch.
# CREDITS
This file was adapted from an initial `CONTRIBUTING.mkdn` file from David
Golden under the terms of the Apache 2 license, with inspiration from the
contributing documents from [Dist::Zilla::Plugin::Author::KENTNL::CONTRIBUTING](https://metacpan.org/pod/Dist::Zilla::Plugin::Author::KENTNL::CONTRIBUTING)
and [Dist::Zilla::PluginBundle::Author::ETHER](https://metacpan.org/pod/Dist::Zilla::PluginBundle::Author::ETHER).
libwww-perl-6.31/cpanfile 000644 000766 000024 00000003166 13213362654 015710 0 ustar 00ether staff 000000 000000 on 'configure' => sub {
requires 'ExtUtils::MakeMaker';
requires 'Getopt::Long';
requires 'File::Copy';
};
on 'runtime' => sub {
requires 'perl' => '5.008001';
requires 'strict';
requires 'warnings';
requires 'base';
requires 'Digest::MD5';
requires 'Encode' => '2.12';
requires 'Encode::Locale';
requires 'File::Listing' => '6';
requires 'HTML::Entities';
requires 'HTML::HeadParser';
requires 'HTTP::Cookies' => '6';
requires 'HTTP::Daemon' => '6';
requires 'HTTP::Date' => '6';
requires 'HTTP::Negotiate' => '6';
requires 'HTTP::Request' => '6';
requires 'HTTP::Request::Common' => '6';
requires 'HTTP::Response' => '6';
requires 'HTTP::Status' => '6';
requires 'IO::Select';
requires 'IO::Socket';
requires 'LWP::MediaTypes' => '6';
requires 'MIME::Base64' => '2.1';
requires 'Net::FTP' => '2.58';
requires 'Net::HTTP' => '6.07';
requires 'Scalar::Util';
requires 'Try::Tiny';
requires 'URI' => '1.10';
requires 'URI::Escape';
requires 'WWW::RobotRules' => '6';
suggests 'Authen::NTLM' => '1.02';
suggests 'IO::Socket::INET';
suggests 'LWP::Protocol::https' => '6.02';
};
on 'test' => sub {
requires 'Test::Fatal';
requires 'Test::More';
requires 'Test::RequiresInternet';
requires 'FindBin';
};
on 'develop' => sub {
requires 'Test::CheckManifest' => '1.29';
requires 'Test::CPAN::Changes' => '0.4';
requires 'Test::CPAN::Meta';
requires 'Test::Kwalitee' => '1.22';
requires 'Test::Pod::Spelling::CommonMistakes' => '1.000';
requires 'Try::Tiny' => '0.24';
};
libwww-perl-6.31/dist.ini 000600 000766 000024 00000013040 13213362654 015630 0 ustar 00ether staff 000000 000000 name = libwww-perl
author = Gisle Aas
license = Perl_5
copyright_holder = Gisle Aas
copyright_year = 1995
; Gather stuff in
[Git::GatherDir]
exclude_filename = LICENSE
exclude_filename = META.json
exclude_filename = Makefile.PL
exclude_filename = README.md
; Handle the META resources
[MetaConfig]
[MetaProvides::Package]
[MetaNoIndex]
directory = t
directory = xt
[MetaYAML]
[MetaJSON]
[MetaResources]
x_IRC = irc://irc.perl.org/#lwp
x_MailingList = mailto:libwww@perl.org
[CopyFilesFromBuild]
copy = Makefile.PL
copy = META.json
copy = LICENSE
[Git::Check]
allow_dirty = Makefile.PL
allow_dirty = META.json
allow_dirty = LICENSE
[Git::Contributors]
[GithubMeta]
issues = 1
user = libwww-perl
[Authority]
do_munging = 0
authority = cpan:LWWWP
[Manifest]
[License]
; Create Readme
[ReadmeAnyFromPod / Markdown_Readme]
source_filename = lib/LWP/UserAgent.pm
type = markdown
filename = README.md
location = root
; make the bin dir executables
[ExecDir]
; [ShareDir]
; The distribution version is read from lib/LWP.pm's $VERSION.
; At release, all versions are bumped.
; To change the version at release time, you can either edit LWP.pm's
; $VERSION, or set the V environment variable, e.g. V=1.23 dzil release
[@Git::VersionManager]
commit_files_after_release = Makefile.PL
commit_files_after_release = META.json
commit_files_after_release = LICENSE
commit_files_after_release = README.md
post-release commit.allow_dirty = Makefile.PL ; temporary, until bundle does this
[Prereqs::FromCPANfile]
[MakeMaker::Awesome]
delimiter = |
header = |use Getopt::Long qw(GetOptions);
header = |GetOptions(\my %opt,
header = | 'aliases',
header = | 'no-programs|n',
header = |) or do {
header = | die "Usage: $0 [--aliases] [--no-programs]\n";
header = |};
header = |my @prog;
header = |push(@prog, qw(lwp-request lwp-mirror lwp-download lwp-dump))
header = | unless $opt{'no-programs'} || grep /^LIB=/, @ARGV;
header = |if ($opt{'aliases'} && grep(/lwp-request/, @prog)) {
header = | require File::Copy;
header = | for (qw(GET HEAD POST)) {
header = | File::Copy::copy("bin/lwp-request", "bin/$_") || die "Can't copy bin/$_";
header = | chmod(0755, "bin/$_");
header = | push(@prog, $_);
header = | }
header = |}
WriteMakefile_arg = EXE_FILES => [ map "bin/$_", @prog ]
[TestRelease]
[ConfirmRelease]
[UploadToCPAN]
[CheckChangeLog]
[CheckChangesHasContent]
; TODO strict and warnings to quiet the kwalitee tests
; [Test::Kwalitee]
; filename = xt/author/kwalitee.t
[MojibakeTests]
[Test::Version]
[Test::ReportPrereqs]
[Test::Compile]
bail_out_on_fail = 1
xt_mode = 1
[Test::Portability]
; TODO perltidy for NoTabs and namespace::autoclean
; [Test::CleanNamespaces] ; TODO
; [Test::NoTabs] ; TODO
[Test::EOL]
[MetaTests]
[Test::ChangesHasContent]
[Test::MinimumVersion]
[PodSyntaxTests]
[Test::Pod::Coverage::Configurable]
skip = LWP
skip = LWP::Debug
skip = LWP::Debug::TraceHTTP
skip = LWP::Authen::Basic
skip = LWP::Authen::Digest
skip = LWP::Authen::Ntlm
skip = LWP::DebugFile
trustme = LWP::UserAgent => qr/^(?:run_handlers|send_request|use_alarm|use_eval)$/
trustme = LWP::Protocol => qr/^(?:max_size|timeout)$/
trustme = LWP::Protocol::http => qr/^(?:hlist_remove|socket_class|socket_type)$/
trustme = LWP::Protocol::gopher => qr/^(?:gopher2url|menu2html)$/
trustme = LWP::RobotUA => qr/^host_count$/
[Test::PodSpelling]
wordlist = Pod::Wordlist
spell_cmd = aspell list
stopword = afPuUsSedvhx
stopword = Accomazzi
stopword = Alexandre
stopword = Andreas
stopword = Asplund
stopword = Betts
stopword = Bochner
stopword = BooK
stopword = Buenzli
stopword = Chamas
stopword = Coppit
stopword = Dalgleish
stopword = Dubois
stopword = Dunkin
stopword = Duret
stopword = Dvornik
stopword = Eldridge
stopword = Gertjan
stopword = Graaff
stopword = Greab
stopword = Guenther
stopword = Gurusamy
stopword = Gustafsson
stopword = Hakanson
stopword = Harald
stopword = Hedlund
stopword = Hoblitt
stopword = Hwa
stopword = INOUE
stopword = Joao
stopword = Joerg
stopword = Kaminsky
stopword = Kartik
stopword = Katsuhiro
stopword = Kebsch
stopword = Keiichiro
stopword = Kilzer
stopword = Klar
stopword = Koster
stopword = König
stopword = KONISHI
stopword = Kronengold
stopword = Krüger
stopword = Kubb
stopword = Laker
stopword = Langfeldt
stopword = Langheinrich
stopword = Liam
stopword = Lindley
stopword = Lotterer
stopword = Lutz
stopword = MacEachern
stopword = Macdonald
stopword = Marko
stopword = Markus
stopword = Martijn
stopword = McCauley
stopword = Melchner
stopword = Moshe
stopword = Murrell
stopword = Nagano
stopword = Nicolai
stopword = Nierstrasz
stopword = Olly
stopword = Oosten
stopword = Panchenko
stopword = Pimlott
stopword = Pon
stopword = Quaranta
stopword = Radoslaw
stopword = Radu
stopword = Rai
stopword = Rezic
stopword = Sarathy
stopword = Schilli
stopword = Schinder
stopword = Shirazi
stopword = Skyttä
stopword = Slaven
stopword = Spafford
stopword = Stosberg
stopword = Subbarao
stopword = Takanori
stopword = Thoennes
stopword = Thurn
stopword = Tilly
stopword = Ugai
stopword = Unger
stopword = VanHeyningen
stopword = Vandewege
stopword = Ville
stopword = Yitzchak
stopword = Yoshinari
stopword = Zajac
stopword = Zakharevich
stopword = Zielinski
stopword = Zoest
stopword = CPAN
stopword = CGI
stopword = UserAgent
stopword = UA
stopword = RobotUA
stopword = NTLM
stopword = NNTP
stopword = TCP
stopword = WireShark
stopword = Yee
stopword = shildreth
stopword = Newby
stopword = Mailto
stopword = peterm
stopword = de
stopword = erik
stopword = getprint
stopword = getstore
[RunExtraTests]
[CheckStrictVersion]
decimal_only = 1
libwww-perl-6.31/lib/ 000700 000766 000024 00000000000 13213362654 014732 5 ustar 00ether staff 000000 000000 libwww-perl-6.31/LICENSE 000644 000766 000024 00000043644 13213362654 015216 0 ustar 00ether staff 000000 000000 This software is copyright (c) 1995 by Gisle Aas.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
Terms of the Perl programming language system itself
a) the GNU General Public License as published by the Free
Software Foundation; either version 1, or (at your option) any
later version, or
b) the "Artistic License"
--- The GNU General Public License, Version 1, February 1989 ---
This software is Copyright (c) 1995 by Gisle Aas.
This is free software, licensed under:
The GNU General Public License, Version 1, February 1989
GNU GENERAL PUBLIC LICENSE
Version 1, February 1989
Copyright (C) 1989 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The license agreements of most software companies try to keep users
at the mercy of those companies. By contrast, our General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. The
General Public License applies to the Free Software Foundation's
software and to any other program whose authors commit to using it.
You can use it for your programs, too.
When we speak of free software, we are referring to freedom, not
price. Specifically, the General Public License is designed to make
sure that you have the freedom to give away or sell copies of free
software, that you receive source code or can get it if you want it,
that you can change the software or use pieces of it in new free
programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of a such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must tell them their rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any program or other work which
contains a notice placed by the copyright holder saying it may be
distributed under the terms of this General Public License. The
"Program", below, refers to any such program or work, and a "work based
on the Program" means either the Program or any work containing the
Program or a portion of it, either verbatim or with modifications. Each
licensee is addressed as "you".
1. You may copy and distribute verbatim copies of the Program's source
code as you receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice and
disclaimer of warranty; keep intact all the notices that refer to this
General Public License and to the absence of any warranty; and give any
other recipients of the Program a copy of this General Public License
along with the Program. You may charge a fee for the physical act of
transferring a copy.
2. You may modify your copy or copies of the Program or any portion of
it, and copy and distribute such modifications under the terms of Paragraph
1 above, provided that you also do the following:
a) cause the modified files to carry prominent notices stating that
you changed the files and the date of any change; and
b) cause the whole of any work that you distribute or publish, that
in whole or in part contains the Program or any part thereof, either
with or without modifications, to be licensed at no charge to all
third parties under the terms of this General Public License (except
that you may choose to grant warranty protection to some or all
third parties, at your option).
c) If the modified program normally reads commands interactively when
run, you must cause it, when started running for such interactive use
in the simplest and most usual way, to print or display an
announcement including an appropriate copyright notice and a notice
that there is no warranty (or else, saying that you provide a
warranty) and that users may redistribute the program under these
conditions, and telling the user how to view a copy of this General
Public License.
d) You may charge a fee for the physical act of transferring a
copy, and you may at your option offer warranty protection in
exchange for a fee.
Mere aggregation of another independent work with the Program (or its
derivative) on a volume of a storage or distribution medium does not bring
the other work under the scope of these terms.
3. You may copy and distribute the Program (or a portion or derivative of
it, under Paragraph 2) in object code or executable form under the terms of
Paragraphs 1 and 2 above provided that you also do one of the following:
a) accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of
Paragraphs 1 and 2 above; or,
b) accompany it with a written offer, valid for at least three
years, to give any third party free (except for a nominal charge
for the cost of distribution) a complete machine-readable copy of the
corresponding source code, to be distributed under the terms of
Paragraphs 1 and 2 above; or,
c) accompany it with the information you received as to where the
corresponding source code may be obtained. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form alone.)
Source code for a work means the preferred form of the work for making
modifications to it. For an executable file, complete source code means
all the source code for all modules it contains; but, as a special
exception, it need not include source code for modules which are standard
libraries that accompany the operating system on which the executable
file runs, or for standard header files or definitions files that
accompany that operating system.
4. You may not copy, modify, sublicense, distribute or transfer the
Program except as expressly provided under this General Public License.
Any attempt otherwise to copy, modify, sublicense, distribute or transfer
the Program is void, and will automatically terminate your rights to use
the Program under this License. However, parties who have received
copies, or rights to use copies, from you under this General Public
License will not have their licenses terminated so long as such parties
remain in full compliance.
5. By copying, distributing or modifying the Program (or any work based
on the Program) you indicate your acceptance of this license to do so,
and all its terms and conditions.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the original
licensor to copy, distribute or modify the Program subject to these
terms and conditions. You may not impose any further restrictions on the
recipients' exercise of the rights granted herein.
7. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of the license which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
the license, you may choose any version ever published by the Free Software
Foundation.
8. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to humanity, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively convey
the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
Copyright (C) 19yy
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19xx name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the
appropriate parts of the General Public License. Of course, the
commands you use may be called something other than `show w' and `show
c'; they could even be mouse-clicks or menu items--whatever suits your
program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
program `Gnomovision' (a program to direct compilers to make passes
at assemblers) written by James Hacker.
, 1 April 1989
Ty Coon, President of Vice
That's all there is to it!
--- The Artistic License 1.0 ---
This software is Copyright (c) 1995 by Gisle Aas.
This is free software, licensed under:
The Artistic License 1.0
The Artistic License
Preamble
The intent of this document is to state the conditions under which a Package
may be copied, such that the Copyright Holder maintains some semblance of
artistic control over the development of the package, while giving the users of
the package the right to use and distribute the Package in a more-or-less
customary fashion, plus the right to make reasonable modifications.
Definitions:
- "Package" refers to the collection of files distributed by the Copyright
Holder, and derivatives of that collection of files created through
textual modification.
- "Standard Version" refers to such a Package if it has not been modified,
or has been modified in accordance with the wishes of the Copyright
Holder.
- "Copyright Holder" is whoever is named in the copyright or copyrights for
the package.
- "You" is you, if you're thinking about copying or distributing this Package.
- "Reasonable copying fee" is whatever you can justify on the basis of media
cost, duplication charges, time of people involved, and so on. (You will
not be required to justify it to the Copyright Holder, but only to the
computing community at large as a market that must bear the fee.)
- "Freely Available" means that no fee is charged for the item itself, though
there may be fees involved in handling the item. It also means that
recipients of the item may redistribute it under the same conditions they
received it.
1. You may make and give away verbatim copies of the source form of the
Standard Version of this Package without restriction, provided that you
duplicate all of the original copyright notices and associated disclaimers.
2. You may apply bug fixes, portability fixes and other modifications derived
from the Public Domain or from the Copyright Holder. A Package modified in such
a way shall still be considered the Standard Version.
3. You may otherwise modify your copy of this Package in any way, provided that
you insert a prominent notice in each changed file stating how and when you
changed that file, and provided that you do at least ONE of the following:
a) place your modifications in the Public Domain or otherwise make them
Freely Available, such as by posting said modifications to Usenet or an
equivalent medium, or placing the modifications on a major archive site
such as ftp.uu.net, or by allowing the Copyright Holder to include your
modifications in the Standard Version of the Package.
b) use the modified Package only within your corporation or organization.
c) rename any non-standard executables so the names do not conflict with
standard executables, which must also be provided, and provide a separate
manual page for each non-standard executable that clearly documents how it
differs from the Standard Version.
d) make other distribution arrangements with the Copyright Holder.
4. You may distribute the programs of this Package in object code or executable
form, provided that you do at least ONE of the following:
a) distribute a Standard Version of the executables and library files,
together with instructions (in the manual page or equivalent) on where to
get the Standard Version.
b) accompany the distribution with the machine-readable source of the Package
with your modifications.
c) accompany any non-standard executables with their corresponding Standard
Version executables, giving the non-standard executables non-standard
names, and clearly documenting the differences in manual pages (or
equivalent), together with instructions on where to get the Standard
Version.
d) make other distribution arrangements with the Copyright Holder.
5. You may charge a reasonable copying fee for any distribution of this
Package. You may charge any fee you choose for support of this Package. You
may not charge a fee for this Package itself. However, you may distribute this
Package in aggregate with other (possibly commercial) programs as part of a
larger (possibly commercial) software distribution provided that you do not
advertise this Package as a product of your own.
6. The scripts and library files supplied as input to or produced as output
from the programs of this Package do not automatically fall under the copyright
of this Package, but belong to whomever generated them, and may be sold
commercially, and may be aggregated with this Package.
7. C or perl subroutines supplied by you and linked into this Package shall not
be considered part of this Package.
8. The name of the Copyright Holder may not be used to endorse or promote
products derived from this software without specific prior written permission.
9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
The End
libwww-perl-6.31/lwpcook.pod 000644 000766 000024 00000022061 13213362654 016361 0 ustar 00ether staff 000000 000000 =head1 NAME
lwpcook - The libwww-perl cookbook
=head1 DESCRIPTION
This document contain some examples that show typical usage of the
libwww-perl library. You should consult the documentation for the
individual modules for more detail.
All examples should be runnable programs. You can, in most cases, test
the code sections by piping the program text directly to perl.
=head1 GET
It is very easy to use this library to just fetch documents from the
net. The LWP::Simple module provides the get() function that return
the document specified by its URL argument:
use LWP::Simple;
$doc = get 'http://search.cpan.org/dist/libwww-perl/';
or, as a perl one-liner using the getprint() function:
perl -MLWP::Simple -e 'getprint "http://search.cpan.org/dist/libwww-perl/"'
or, how about fetching the latest perl by running this command:
perl -MLWP::Simple -e '
getstore "ftp://ftp.sunet.se/pub/lang/perl/CPAN/src/latest.tar.gz",
"perl.tar.gz"'
You will probably first want to find a CPAN site closer to you by
running something like the following command:
perl -MLWP::Simple -e 'getprint "http://www.cpan.org/SITES.html"'
Enough of this simple stuff! The LWP object oriented interface gives
you more control over the request sent to the server. Using this
interface you have full control over headers sent and how you want to
handle the response returned.
use LWP::UserAgent;
$ua = LWP::UserAgent->new;
$ua->agent("$0/0.1 " . $ua->agent);
# $ua->agent("Mozilla/8.0") # pretend we are very capable browser
$req = HTTP::Request->new(
GET => 'http://search.cpan.org/dist/libwww-perl/');
$req->header('Accept' => 'text/html');
# send request
$res = $ua->request($req);
# check the outcome
if ($res->is_success) {
print $res->decoded_content;
}
else {
print "Error: " . $res->status_line . "\n";
}
The lwp-request program (alias GET) that is distributed with the
library can also be used to fetch documents from WWW servers.
=head1 HEAD
If you just want to check if a document is present (i.e. the URL is
valid) try to run code that looks like this:
use LWP::Simple;
if (head($url)) {
# ok document exists
}
The head() function really returns a list of meta-information about
the document. The first three values of the list returned are the
document type, the size of the document, and the age of the document.
More control over the request or access to all header values returned
require that you use the object oriented interface described for GET
above. Just s/GET/HEAD/g.
=head1 POST
There is no simple procedural interface for posting data to a WWW server. You
must use the object oriented interface for this. The most common POST
operation is to access a WWW form application:
use LWP::UserAgent;
$ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(
POST => 'https://rt.cpan.org/Public/Dist/Display.html');
$req->content_type('application/x-www-form-urlencoded');
$req->content('Status=Active&Name=libwww-perl');
my $res = $ua->request($req);
print $res->as_string;
Lazy people use the HTTP::Request::Common module to set up a suitable
POST request message (it handles all the escaping issues) and has a
suitable default for the content_type:
use HTTP::Request::Common qw(POST);
use LWP::UserAgent;
$ua = LWP::UserAgent->new;
my $req = POST 'https://rt.cpan.org/Public/Dist/Display.html',
[ Status => 'Active', Name => 'libwww-perl' ];
print $ua->request($req)->as_string;
The lwp-request program (alias POST) that is distributed with the
library can also be used for posting data.
=head1 PROXIES
Some sites use proxies to go through fire wall machines, or just as
cache in order to improve performance. Proxies can also be used for
accessing resources through protocols not supported directly (or
supported badly :-) by the libwww-perl library.
You should initialize your proxy setting before you start sending
requests:
use LWP::UserAgent;
$ua = LWP::UserAgent->new;
$ua->env_proxy; # initialize from environment variables
# or
$ua->proxy(ftp => 'http://proxy.myorg.com');
$ua->proxy(wais => 'http://proxy.myorg.com');
$ua->no_proxy(qw(no se fi));
my $req = HTTP::Request->new(GET => 'wais://xxx.com/');
print $ua->request($req)->as_string;
The LWP::Simple interface will call env_proxy() for you automatically.
Applications that use the $ua->env_proxy() method will normally not
use the $ua->proxy() and $ua->no_proxy() methods.
Some proxies also require that you send it a username/password in
order to let requests through. You should be able to add the
required header, with something like this:
use LWP::UserAgent;
$ua = LWP::UserAgent->new;
$ua->proxy(['http', 'ftp'] => 'http://username:password@proxy.myorg.com');
$req = HTTP::Request->new('GET',"http://www.perl.com");
$res = $ua->request($req);
print $res->decoded_content if $res->is_success;
Replace C, C and
C with something suitable for your site.
=head1 ACCESS TO PROTECTED DOCUMENTS
Documents protected by basic authorization can easily be accessed
like this:
use LWP::UserAgent;
$ua = LWP::UserAgent->new;
$req = HTTP::Request->new(GET => 'http://www.linpro.no/secret/');
$req->authorization_basic('aas', 'mypassword');
print $ua->request($req)->as_string;
The other alternative is to provide a subclass of I that
overrides the get_basic_credentials() method. Study the I
program for an example of this.
=head1 COOKIES
Some sites like to play games with cookies. By default LWP ignores
cookies provided by the servers it visits. LWP will collect cookies
and respond to cookie requests if you set up a cookie jar. LWP doesn't
provide a cookie jar itself, but if you install L,
it can be used like this:
use LWP::UserAgent;
use HTTP::CookieJar::LWP;
$ua = LWP::UserAgent->new(
cookie_jar => HTTP::CookieJar::LWP->new,
);
# and then send requests just as you used to do
$res = $ua->request(HTTP::Request->new(GET => "http://no.yahoo.com/"));
print $res->status_line, "\n";
=head1 HTTPS
URLs with https scheme are accessed in exactly the same way as with
http scheme, provided that an SSL interface module for LWP has been
properly installed (see the F file found in the
libwww-perl distribution for more details). If no SSL interface is
installed for LWP to use, then you will get "501 Protocol scheme
'https' is not supported" errors when accessing such URLs.
Here's an example of fetching and printing a WWW page using SSL:
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(GET => 'https://www.helsinki.fi/');
my $res = $ua->request($req);
if ($res->is_success) {
print $res->as_string;
}
else {
print "Failed: ", $res->status_line, "\n";
}
=head1 MIRRORING
If you want to mirror documents from a WWW server, then try to run
code similar to this at regular intervals:
use LWP::Simple;
%mirrors = (
'http://www.sn.no/' => 'sn.html',
'http://www.perl.com/' => 'perl.html',
'http://search.cpan.org/distlibwww-perl/' => 'lwp.html',
'gopher://gopher.sn.no/' => 'gopher.html',
);
while (($url, $localfile) = each(%mirrors)) {
mirror($url, $localfile);
}
Or, as a perl one-liner:
perl -MLWP::Simple -e 'mirror("http://www.perl.com/", "perl.html")';
The document will not be transferred unless it has been updated.
=head1 LARGE DOCUMENTS
If the document you want to fetch is too large to be kept in memory,
then you have two alternatives. You can instruct the library to write
the document content to a file (second $ua->request() argument is a file
name):
use LWP::UserAgent;
$ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(GET =>
'http://www.cpan.org/CPAN/authors/id/O/OA/OALDERS/libwww-perl-6.26.tar.gz');
$res = $ua->request($req, "libwww-perl.tar.gz");
if ($res->is_success) {
print "ok\n";
}
else {
print $res->status_line, "\n";
}
Or you can process the document as it arrives (second $ua->request()
argument is a code reference):
use LWP::UserAgent;
$ua = LWP::UserAgent->new;
$URL = 'ftp://ftp.isc.org/pub/rfc/rfc-index.txt';
my $expected_length;
my $bytes_received = 0;
my $res =
$ua->request(HTTP::Request->new(GET => $URL),
sub {
my($chunk, $res) = @_;
$bytes_received += length($chunk);
unless (defined $expected_length) {
$expected_length = $res->content_length || 0;
}
if ($expected_length) {
printf STDERR "%d%% - ",
100 * $bytes_received / $expected_length;
}
print STDERR "$bytes_received bytes received\n";
# XXX Should really do something with the chunk itself
# print $chunk;
});
print $res->status_line, "\n";
=head1 COPYRIGHT
Copyright 1996-2001, Gisle Aas
This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
libwww-perl-6.31/lwptut.pod 000644 000766 000024 00000060566 13213362654 016256 0 ustar 00ether staff 000000 000000 =head1 NAME
lwptut -- An LWP Tutorial
=head1 DESCRIPTION
LWP (short for "Library for WWW in Perl") is a very popular group of
Perl modules for accessing data on the Web. Like most Perl
module-distributions, each of LWP's component modules comes with
documentation that is a complete reference to its interface. However,
there are so many modules in LWP that it's hard to know where to start
looking for information on how to do even the simplest most common
things.
Really introducing you to using LWP would require a whole book -- a book
that just happens to exist, called I. But this article
should give you a taste of how you can go about some common tasks with
LWP.
=head2 Getting documents with LWP::Simple
If you just want to get what's at a particular URL, the simplest way
to do it is LWP::Simple's functions.
In a Perl program, you can call its C function. It will try
getting that URL's content. If it works, then it'll return the
content; but if there's some error, it'll return undef.
my $url = 'http://www.npr.org/programs/fa/?todayDate=current';
# Just an example: the URL for the most recent /Fresh Air/ show
use LWP::Simple;
my $content = get $url;
die "Couldn't get $url" unless defined $content;
# Then go do things with $content, like this:
if($content =~ m/jazz/i) {
print "They're talking about jazz today on Fresh Air!\n";
}
else {
print "Fresh Air is apparently jazzless today.\n";
}
The handiest variant on C is C, which is useful in Perl
one-liners. If it can get the page whose URL you provide, it sends it
to STDOUT; otherwise it complains to STDERR.
% perl -MLWP::Simple -e "getprint 'http://www.cpan.org/RECENT'"
That is the URL of a plain text file that lists new files in CPAN in
the past two weeks. You can easily make it part of a tidy little
shell command, like this one that mails you the list of new
C modules:
% perl -MLWP::Simple -e "getprint 'http://www.cpan.org/RECENT'" \
| grep "/by-module/Acme" | mail -s "New Acme modules! Joy!" $USER
There are other useful functions in LWP::Simple, including one function
for running a HEAD request on a URL (useful for checking links, or
getting the last-revised time of a URL), and two functions for
saving/mirroring a URL to a local file. See L for the full details, or chapter 2 of I for more examples.
=for comment
##########################################################################
=head2 The Basics of the LWP Class Model
LWP::Simple's functions are handy for simple cases, but its functions
don't support cookies or authorization, don't support setting header
lines in the HTTP request, generally don't support reading header lines
in the HTTP response (notably the full HTTP error message, in case of an
error). To get at all those features, you'll have to use the full LWP
class model.
While LWP consists of dozens of classes, the main two that you have to
understand are L and L. LWP::UserAgent
is a class for "virtual browsers" which you use for performing requests,
and L is a class for the responses (or error messages)
that you get back from those requests.
The basic idiom is C<< $response = $browser->get($url) >>, or more fully
illustrated:
# Early in your program:
use LWP 5.64; # Loads all important LWP classes, and makes
# sure your version is reasonably recent.
my $browser = LWP::UserAgent->new;
...
# Then later, whenever you need to make a get request:
my $url = 'http://www.npr.org/programs/fa/?todayDate=current';
my $response = $browser->get( $url );
die "Can't get $url -- ", $response->status_line
unless $response->is_success;
die "Hey, I was expecting HTML, not ", $response->content_type
unless $response->content_type eq 'text/html';
# or whatever content-type you're equipped to deal with
# Otherwise, process the content somehow:
if($response->decoded_content =~ m/jazz/i) {
print "They're talking about jazz today on Fresh Air!\n";
}
else {
print "Fresh Air is apparently jazzless today.\n";
}
There are two objects involved: C<$browser>, which holds an object of
class LWP::UserAgent, and then the C<$response> object, which is of
class HTTP::Response. You really need only one browser object per
program; but every time you make a request, you get back a new
HTTP::Response object, which will have some interesting attributes:
=over
=item *
A status code indicating
success or failure
(which you can test with C<< $response->is_success >>).
=item *
An HTTP status
line that is hopefully informative if there's failure (which you can
see with C<< $response->status_line >>,
returning something like "404 Not Found").
=item *
A MIME content-type like "text/html", "image/gif",
"application/xml", etc., which you can see with
C<< $response->content_type >>
=item *
The actual content of the response, in C<< $response->decoded_content >>.
If the response is HTML, that's where the HTML source will be; if
it's a GIF, then C<< $response->decoded_content >> will be the binary
GIF data.
=item *
And dozens of other convenient and more specific methods that are
documented in the docs for L, and its superclasses
L and L.
=back
=for comment
##########################################################################
=head2 Adding Other HTTP Request Headers
The most commonly used syntax for requests is C<< $response =
$browser->get($url) >>, but in truth, you can add extra HTTP header
lines to the request by adding a list of key-value pairs after the URL,
like so:
$response = $browser->get( $url, $key1, $value1, $key2, $value2, ... );
For example, here's how to send some commonly used headers, in case
you're dealing with a site that would otherwise reject your request:
my @ns_headers = (
'User-Agent' => 'Mozilla/4.76 [en] (Win98; U)',
'Accept' => 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*',
'Accept-Charset' => 'iso-8859-1,*,utf-8',
'Accept-Language' => 'en-US',
);
...
$response = $browser->get($url, @ns_headers);
If you weren't reusing that array, you could just go ahead and do this:
$response = $browser->get($url,
'User-Agent' => 'Mozilla/4.76 [en] (Win98; U)',
'Accept' => 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*',
'Accept-Charset' => 'iso-8859-1,*,utf-8',
'Accept-Language' => 'en-US',
);
If you were only ever changing the 'User-Agent' line, you could just change
the C<$browser> object's default line from "libwww-perl/5.65" (or the like)
to whatever you like, using the LWP::UserAgent C method:
$browser->agent('Mozilla/4.76 [en] (Win98; U)');
=for comment
##########################################################################
=head2 Enabling Cookies
A default LWP::UserAgent object acts like a browser with its cookies
support turned off. There are various ways of turning it on, by setting
its C attribute. A "cookie jar" is an object representing
a little database of all
the HTTP cookies that a browser knows about. It can correspond to a
file on disk or
an in-memory object that starts out empty, and whose collection of
cookies will disappear once the program is finished running.
To give a browser an in-memory empty cookie jar, you set its C
attribute like so:
use HTTP::CookieJar::LWP;
$browser->cookie_jar( HTTP::CookieJar::LWP->new );
To save a cookie jar to disk, see L<< HTTP::CookieJar/dump_cookies >>.
To load cookies from disk into a jar, see L<<
HTTP::CookieJar/load_cookies >>.
=for comment
##########################################################################
=head2 Posting Form Data
Many HTML forms send data to their server using an HTTP POST request, which
you can send with this syntax:
$response = $browser->post( $url,
[
formkey1 => value1,
formkey2 => value2,
...
],
);
Or if you need to send HTTP headers:
$response = $browser->post( $url,
[
formkey1 => value1,
formkey2 => value2,
...
],
headerkey1 => value1,
headerkey2 => value2,
);
For example, the following program makes a search request to AltaVista
(by sending some form data via an HTTP POST request), and extracts from
the HTML the report of the number of matches:
use strict;
use warnings;
use LWP 5.64;
my $browser = LWP::UserAgent->new;
my $word = 'tarragon';
my $url = 'http://search.yahoo.com/yhs/search';
my $response = $browser->post( $url,
[ 'q' => $word, # the Altavista query string
'fr' => 'altavista', 'pg' => 'q', 'avkw' => 'tgz', 'kl' => 'XX',
]
);
die "$url error: ", $response->status_line
unless $response->is_success;
die "Weird content type at $url -- ", $response->content_type
unless $response->content_is_html;
if( $response->decoded_content =~ m{([0-9,]+)(?:<.*?>)? results for} ) {
# The substring will be like "996,000 results for"
print "$word: $1\n";
}
else {
print "Couldn't find the match-string in the response\n";
}
=for comment
##########################################################################
=head2 Sending GET Form Data
Some HTML forms convey their form data not by sending the data
in an HTTP POST request, but by making a normal GET request with
the data stuck on the end of the URL. For example, if you went to
C and ran a search on "Blade Runner", the URL you'd see
in your browser window would be:
http://www.imdb.com/find?s=all&q=Blade+Runner
To run the same search with LWP, you'd use this idiom, which involves
the URI class:
use URI;
my $url = URI->new( 'http://www.imdb.com/find' );
# makes an object representing the URL
$url->query_form( # And here the form data pairs:
'q' => 'Blade Runner',
's' => 'all',
);
my $response = $browser->get($url);
See chapter 5 of I for a longer discussion of HTML forms
and of form data, and chapters 6 through 9 for a longer discussion of
extracting data from HTML.
=head2 Absolutizing URLs
The URI class that we just mentioned above provides all sorts of methods
for accessing and modifying parts of URLs (such as asking sort of URL it
is with C<< $url->scheme >>, and asking what host it refers to with C<<
$url->host >>, and so on, as described in L. However, the methods of most immediate interest
are the C method seen above, and now the C method
for taking a probably-relative URL string (like "../foo.html") and getting
back an absolute URL (like "http://www.perl.com/stuff/foo.html"), as
shown here:
use URI;
$abs = URI->new_abs($maybe_relative, $base);
For example, consider this program that matches URLs in the HTML
list of new modules in CPAN:
use strict;
use warnings;
use LWP;
my $browser = LWP::UserAgent->new;
my $url = 'http://www.cpan.org/RECENT.html';
my $response = $browser->get($url);
die "Can't get $url -- ", $response->status_line
unless $response->is_success;
my $html = $response->decoded_content;
while( $html =~ m/ method, by changing the C
loop to this:
while( $html =~ m/new_abs( $1, $response->base ) ,"\n";
}
(The C<< $response->base >> method from L
is for returning what URL
should be used for resolving relative URLs -- it's usually just
the same as the URL that you requested.)
That program then emits nicely absolute URLs:
http://www.cpan.org/MIRRORING.FROM
http://www.cpan.org/RECENT
http://www.cpan.org/RECENT.html
http://www.cpan.org/authors/00whois.html
http://www.cpan.org/authors/01mailrc.txt.gz
http://www.cpan.org/authors/id/A/AA/AASSAD/CHECKSUMS
...
See chapter 4 of I for a longer discussion of URI objects.
Of course, using a regexp to match hrefs is a bit simplistic, and for
more robust programs, you'll probably want to use an HTML-parsing module
like L or L or even maybe
L.
=for comment
##########################################################################
=head2 Other Browser Attributes
LWP::UserAgent objects have many attributes for controlling how they
work. Here are a few notable ones:
=over
=item *
C<< $browser->timeout(15); >>
This sets this browser object to give up on requests that don't answer
within 15 seconds.
=item *
C<< $browser->protocols_allowed( [ 'http', 'gopher'] ); >>
This sets this browser object to not speak any protocols other than HTTP
and gopher. If it tries accessing any other kind of URL (like an "ftp:"
or "mailto:" or "news:" URL), then it won't actually try connecting, but
instead will immediately return an error code 500, with a message like
"Access to 'ftp' URIs has been disabled".
=item *
C<< use LWP::ConnCache; $browser->conn_cache(LWP::ConnCache->new()); >>
This tells the browser object to try using the HTTP/1.1 "Keep-Alive"
feature, which speeds up requests by reusing the same socket connection
for multiple requests to the same server.
=item *
C<< $browser->agent( 'SomeName/1.23 (more info here maybe)' ) >>
This changes how the browser object will identify itself in
the default "User-Agent" line is its HTTP requests. By default,
it'll send "libwww-perl/I", like
"libwww-perl/5.65". You can change that to something more descriptive
like this:
$browser->agent( 'SomeName/3.14 (contact@robotplexus.int)' );
Or if need be, you can go in disguise, like this:
$browser->agent( 'Mozilla/4.0 (compatible; MSIE 5.12; Mac_PowerPC)' );
=item *
C<< push @{ $ua->requests_redirectable }, 'POST'; >>
This tells this browser to obey redirection responses to POST requests
(like most modern interactive browsers), even though the HTTP RFC says
that should not normally be done.
=back
For more options and information, see L.
=for comment
##########################################################################
=head2 Writing Polite Robots
If you want to make sure that your LWP-based program respects F
files and doesn't make too many requests too fast, you can use the LWP::RobotUA
class instead of the LWP::UserAgent class.
LWP::RobotUA class is just like LWP::UserAgent, and you can use it like so:
use LWP::RobotUA;
my $browser = LWP::RobotUA->new('YourSuperBot/1.34', 'you@yoursite.com');
# Your bot's name and your email address
my $response = $browser->get($url);
But HTTP::RobotUA adds these features:
=over
=item *
If the F on C<$url>'s server forbids you from accessing
C<$url>, then the C<$browser> object (assuming it's of class LWP::RobotUA)
won't actually request it, but instead will give you back (in C<$response>) a 403 error
with a message "Forbidden by robots.txt". That is, if you have this line:
die "$url -- ", $response->status_line, "\nAborted"
unless $response->is_success;
then the program would die with an error message like this:
http://whatever.site.int/pith/x.html -- 403 Forbidden by robots.txt
Aborted at whateverprogram.pl line 1234
=item *
If this C<$browser> object sees that the last time it talked to
C<$url>'s server was too recently, then it will pause (via C) to
avoid making too many requests too often. How long it will pause for, is
by default one minute -- but you can control it with the C<<
$browser->delay( I ) >> attribute.
For example, this code:
$browser->delay( 7/60 );
...means that this browser will pause when it needs to avoid talking to
any given server more than once every 7 seconds.
=back
For more options and information, see L.
=for comment
##########################################################################
=head2 Using Proxies
In some cases, you will want to (or will have to) use proxies for
accessing certain sites and/or using certain protocols. This is most
commonly the case when your LWP program is running (or could be running)
on a machine that is behind a firewall.
To make a browser object use proxies that are defined in the usual
environment variables (C, etc.), just call the C
on a user-agent object before you go making any requests on it.
Specifically:
use LWP::UserAgent;
my $browser = LWP::UserAgent->new;
# And before you go making any requests:
$browser->env_proxy;
For more information on proxy parameters, see L, specifically the C, C,
and C methods.
=for comment
##########################################################################
=head2 HTTP Authentication
Many web sites restrict access to documents by using "HTTP
Authentication". This isn't just any form of "enter your password"
restriction, but is a specific mechanism where the HTTP server sends the
browser an HTTP code that says "That document is part of a protected
'realm', and you can access it only if you re-request it and add some
special authorization headers to your request".
For example, the Unicode.org admins stop email-harvesting bots from
harvesting the contents of their mailing list archives, by protecting
them with HTTP Authentication, and then publicly stating the username
and password (at C ) -- namely
username "unicode-ml" and password "unicode".
For example, consider this URL, which is part of the protected
area of the web site:
http://www.unicode.org/mail-arch/unicode-ml/y2002-m08/0067.html
If you access that with a browser, you'll get a prompt
like
"Enter username and password for 'Unicode-MailList-Archives' at server
'www.unicode.org'".
In LWP, if you just request that URL, like this:
use LWP;
my $browser = LWP::UserAgent->new;
my $url =
'http://www.unicode.org/mail-arch/unicode-ml/y2002-m08/0067.html';
my $response = $browser->get($url);
die "Error: ", $response->header('WWW-Authenticate') || 'Error accessing',
# ('WWW-Authenticate' is the realm-name)
"\n ", $response->status_line, "\n at $url\n Aborting"
unless $response->is_success;
Then you'll get this error:
Error: Basic realm="Unicode-MailList-Archives"
401 Authorization Required
at http://www.unicode.org/mail-arch/unicode-ml/y2002-m08/0067.html
Aborting at auth1.pl line 9. [or wherever]
...because the C<$browser> doesn't know any the username and password
for that realm ("Unicode-MailList-Archives") at that host
("www.unicode.org"). The simplest way to let the browser know about this
is to use the C method to let it know about a username and
password that it can try using for that realm at that host. The syntax is:
$browser->credentials(
'servername:portnumber',
'realm-name',
'username' => 'password'
);
In most cases, the port number is 80, the default TCP/IP port for HTTP; and
you usually call the C method before you make any requests.
For example:
$browser->credentials(
'reports.mybazouki.com:80',
'web_server_usage_reports',
'plinky' => 'banjo123'
);
So if we add the following to the program above, right after the C<<
$browser = LWP::UserAgent->new; >> line...
$browser->credentials( # add this to our $browser 's "key ring"
'www.unicode.org:80',
'Unicode-MailList-Archives',
'unicode-ml' => 'unicode'
);
...then when we run it, the request succeeds, instead of causing the
C to be called.
=for comment
##########################################################################
=head2 Accessing HTTPS URLs
When you access an HTTPS URL, it'll work for you just like an HTTP URL
would -- if your LWP installation has HTTPS support (via an appropriate
Secure Sockets Layer library). For example:
use LWP;
my $url = 'https://www.paypal.com/'; # Yes, HTTPS!
my $browser = LWP::UserAgent->new;
my $response = $browser->get($url);
die "Error at $url\n ", $response->status_line, "\n Aborting"
unless $response->is_success;
print "Whee, it worked! I got that ",
$response->content_type, " document!\n";
If your LWP installation doesn't have HTTPS support set up, then the
response will be unsuccessful, and you'll get this error message:
Error at https://www.paypal.com/
501 Protocol scheme 'https' is not supported
Aborting at paypal.pl line 7. [or whatever program and line]
If your LWP installation I have HTTPS support installed, then the
response should be successful, and you should be able to consult
C<$response> just like with any normal HTTP response.
For information about installing HTTPS support for your LWP
installation, see the helpful F file that comes in the
libwww-perl distribution.
=for comment
##########################################################################
=head2 Getting Large Documents
When you're requesting a large (or at least potentially large) document,
a problem with the normal way of using the request methods (like C<<
$response = $browser->get($url) >>) is that the response object in
memory will have to hold the whole document -- I. If the
response is a thirty megabyte file, this is likely to be quite an
imposition on this process's memory usage.
A notable alternative is to have LWP save the content to a file on disk,
instead of saving it up in memory. This is the syntax to use:
$response = $ua->get($url,
':content_file' => $filespec,
);
For example,
$response = $ua->get('http://search.cpan.org/',
':content_file' => '/tmp/sco.html'
);
When you use this C<:content_file> option, the C<$response> will have
all the normal header lines, but C<< $response->content >> will be
empty. Errors writing to the content file (for example due to
permission denied or the filesystem being full) will be reported via
the C or C response headers, and not the
C method:
if ($response->header('Client-Aborted') eq 'die') {
# handle error ...
Note that this ":content_file" option isn't supported under older
versions of LWP, so you should consider adding C to check
the LWP version, if you think your program might run on systems with
older versions.
If you need to be compatible with older LWP versions, then use
this syntax, which does the same thing:
use HTTP::Request::Common;
$response = $ua->request( GET($url), $filespec );
=for comment
##########################################################################
=head1 SEE ALSO
Remember, this article is just the most rudimentary introduction to
LWP -- to learn more about LWP and LWP-related tasks, you really
must read from the following:
=over
=item *
L -- simple functions for getting/heading/mirroring URLs
=item *
L -- overview of the libwww-perl modules
=item *
L -- the class for objects that represent "virtual browsers"
=item *
L -- the class for objects that represent the response to
a LWP response, as in C<< $response = $browser->get(...) >>
=item *
L and L -- classes that provide more methods
to HTTP::Response.
=item *
L -- class for objects that represent absolute or relative URLs
=item *
L -- functions for URL-escaping and URL-unescaping strings
(like turning "this & that" to and from "this%20%26%20that").
=item *
L -- functions for HTML-escaping and HTML-unescaping strings
(like turning "C. & E. BrontE" to and from "C. & E. Brontë")
=item *
L and L -- classes for parsing HTML
=item *
L -- class for finding links in HTML documents
=item *
The book I by Sean M. Burke. O'Reilly & Associates,
2002. ISBN: 0-596-00178-9, L . The
whole book is also available free online:
L.
=back
=head1 COPYRIGHT
Copyright 2002, Sean M. Burke. You can redistribute this document and/or
modify it, but only under the same terms as Perl itself.
=head1 AUTHOR
Sean M. Burke C
=for comment
##########################################################################
=cut
# End of Pod
libwww-perl-6.31/Makefile.PL 000644 000766 000024 00000006714 13213362654 016160 0 ustar 00ether staff 000000 000000 # This Makefile.PL for libwww-perl was generated by
# Dist::Zilla::Plugin::MakeMaker::Awesome 0.39.
# Don't edit it but the dist.ini and plugins used to construct it.
use strict;
use warnings;
use 5.008001;
use ExtUtils::MakeMaker;
use Getopt::Long qw(GetOptions);
GetOptions(\my %opt,
'aliases',
'no-programs|n',
) or do {
die "Usage: $0 [--aliases] [--no-programs]\n";
};
my @prog;
push(@prog, qw(lwp-request lwp-mirror lwp-download lwp-dump))
unless $opt{'no-programs'} || grep /^LIB=/, @ARGV;
if ($opt{'aliases'} && grep(/lwp-request/, @prog)) {
require File::Copy;
for (qw(GET HEAD POST)) {
File::Copy::copy("bin/lwp-request", "bin/$_") || die "Can't copy bin/$_";
chmod(0755, "bin/$_");
push(@prog, $_);
}
}
my %WriteMakefileArgs = (
"ABSTRACT" => "The World-Wide Web library for Perl",
"AUTHOR" => "Gisle Aas ",
"CONFIGURE_REQUIRES" => {
"ExtUtils::MakeMaker" => 0,
"File::Copy" => 0,
"Getopt::Long" => 0
},
"DISTNAME" => "libwww-perl",
"EXE_FILES" => [
"bin/lwp-download",
"bin/lwp-dump",
"bin/lwp-mirror",
"bin/lwp-request"
],
"LICENSE" => "perl",
"MIN_PERL_VERSION" => "5.008001",
"NAME" => "libwww::perl",
"PREREQ_PM" => {
"Digest::MD5" => 0,
"Encode" => "2.12",
"Encode::Locale" => 0,
"File::Listing" => 6,
"HTML::Entities" => 0,
"HTML::HeadParser" => 0,
"HTTP::Cookies" => 6,
"HTTP::Daemon" => 6,
"HTTP::Date" => 6,
"HTTP::Negotiate" => 6,
"HTTP::Request" => 6,
"HTTP::Request::Common" => 6,
"HTTP::Response" => 6,
"HTTP::Status" => 6,
"IO::Select" => 0,
"IO::Socket" => 0,
"LWP::MediaTypes" => 6,
"MIME::Base64" => "2.1",
"Net::FTP" => "2.58",
"Net::HTTP" => "6.07",
"Scalar::Util" => 0,
"Try::Tiny" => 0,
"URI" => "1.10",
"URI::Escape" => 0,
"WWW::RobotRules" => 6,
"base" => 0,
"strict" => 0,
"warnings" => 0
},
"TEST_REQUIRES" => {
"ExtUtils::MakeMaker" => 0,
"File::Spec" => 0,
"FindBin" => 0,
"Test::Fatal" => 0,
"Test::More" => 0,
"Test::RequiresInternet" => 0
},
"VERSION" => "6.31",
"test" => {
"TESTS" => "t/*.t t/base/*.t t/base/protocols/*.t t/local/*.t t/robot/*.t"
}
);
%WriteMakefileArgs = (
%WriteMakefileArgs,
EXE_FILES => [ map "bin/$_", @prog ],
);
my %FallbackPrereqs = (
"Digest::MD5" => 0,
"Encode" => "2.12",
"Encode::Locale" => 0,
"ExtUtils::MakeMaker" => 0,
"File::Listing" => 6,
"File::Spec" => 0,
"FindBin" => 0,
"HTML::Entities" => 0,
"HTML::HeadParser" => 0,
"HTTP::Cookies" => 6,
"HTTP::Daemon" => 6,
"HTTP::Date" => 6,
"HTTP::Negotiate" => 6,
"HTTP::Request" => 6,
"HTTP::Request::Common" => 6,
"HTTP::Response" => 6,
"HTTP::Status" => 6,
"IO::Select" => 0,
"IO::Socket" => 0,
"LWP::MediaTypes" => 6,
"MIME::Base64" => "2.1",
"Net::FTP" => "2.58",
"Net::HTTP" => "6.07",
"Scalar::Util" => 0,
"Test::Fatal" => 0,
"Test::More" => 0,
"Test::RequiresInternet" => 0,
"Try::Tiny" => 0,
"URI" => "1.10",
"URI::Escape" => 0,
"WWW::RobotRules" => 6,
"base" => 0,
"strict" => 0,
"warnings" => 0
);
unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {
delete $WriteMakefileArgs{TEST_REQUIRES};
delete $WriteMakefileArgs{BUILD_REQUIRES};
$WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs;
}
delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
unless eval { ExtUtils::MakeMaker->VERSION(6.52) };
WriteMakefile(%WriteMakefileArgs);
libwww-perl-6.31/MANIFEST 000644 000766 000024 00000004152 13213362654 015331 0 ustar 00ether staff 000000 000000 # This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.010.
CONTRIBUTING.md
Changes
LICENSE
MANIFEST
META.json
META.yml
Makefile.PL
README.SSL
bin/lwp-download
bin/lwp-dump
bin/lwp-mirror
bin/lwp-request
cpanfile
dist.ini
lib/LWP.pm
lib/LWP/Authen/Basic.pm
lib/LWP/Authen/Digest.pm
lib/LWP/Authen/Ntlm.pm
lib/LWP/ConnCache.pm
lib/LWP/Debug.pm
lib/LWP/Debug/TraceHTTP.pm
lib/LWP/DebugFile.pm
lib/LWP/MemberMixin.pm
lib/LWP/Protocol.pm
lib/LWP/Protocol/cpan.pm
lib/LWP/Protocol/data.pm
lib/LWP/Protocol/file.pm
lib/LWP/Protocol/ftp.pm
lib/LWP/Protocol/gopher.pm
lib/LWP/Protocol/http.pm
lib/LWP/Protocol/loopback.pm
lib/LWP/Protocol/mailto.pm
lib/LWP/Protocol/nntp.pm
lib/LWP/Protocol/nogo.pm
lib/LWP/RobotUA.pm
lib/LWP/Simple.pm
lib/LWP/UserAgent.pm
lwpcook.pod
lwptut.pod
t/00-report-prereqs.dd
t/00-report-prereqs.t
t/10-attrs.t
t/base/default_content_type.t
t/base/protocols.t
t/base/protocols/nntp.t
t/base/proxy.t
t/base/simple.t
t/base/ua.t
t/base/ua_handlers.t
t/local/autoload-get.t
t/local/autoload.t
t/local/get.t
t/local/http.t
t/local/httpsub.t
t/local/protosub.t
t/robot/ua-get.t
t/robot/ua.t
talk-to-ourself
xt/author/00-compile.t
xt/author/eol.t
xt/author/live/apache-http10.t
xt/author/live/jigsaw/auth-b.t
xt/author/live/jigsaw/auth-d.t
xt/author/live/jigsaw/chunk.t
xt/author/live/jigsaw/md5-get.t
xt/author/live/jigsaw/md5.t
xt/author/live/jigsaw/neg-get.t
xt/author/live/jigsaw/neg.t
xt/author/live/jigsaw/te.t
xt/author/live/online.t
xt/author/misc/dbmrobot
xt/author/misc/get-callback
xt/author/misc/get-file
xt/author/misc/pod.t
xt/author/mojibake.t
xt/author/net/cache-timeouts.t
xt/author/net/cgi-bin/moved
xt/author/net/cgi-bin/nph-slowdata
xt/author/net/cgi-bin/slowread
xt/author/net/cgi-bin/test
xt/author/net/cgi-bin/timeout
xt/author/net/config.pl_dist
xt/author/net/http-get.t
xt/author/net/http-post.t
xt/author/net/http-timeout.t
xt/author/net/mirror.t
xt/author/net/moved.t
xt/author/net/proxy.t
xt/author/pod-coverage.t
xt/author/pod-spell.t
xt/author/pod-syntax.t
xt/author/portability.t
xt/author/test-version.t
xt/release/changes_has_content.t
xt/release/distmeta.t
xt/release/minimum-version.t
libwww-perl-6.31/META.json 000644 000766 000024 00000075741 13213362654 015635 0 ustar 00ether staff 000000 000000 {
"abstract" : "The World-Wide Web library for Perl",
"author" : [
"Gisle Aas "
],
"dynamic_config" : 0,
"generated_by" : "Dist::Zilla version 6.010, CPAN::Meta::Converter version 2.150010",
"license" : [
"perl_5"
],
"meta-spec" : {
"url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
"version" : 2
},
"name" : "libwww-perl",
"no_index" : {
"directory" : [
"t",
"xt"
]
},
"prereqs" : {
"configure" : {
"requires" : {
"ExtUtils::MakeMaker" : "0",
"File::Copy" : "0",
"Getopt::Long" : "0"
},
"suggests" : {
"JSON::PP" : "2.27300"
}
},
"develop" : {
"requires" : {
"File::Spec" : "0",
"IO::Handle" : "0",
"IPC::Open3" : "0",
"Pod::Coverage::TrustPod" : "0",
"Test::CPAN::Changes" : "0.4",
"Test::CPAN::Meta" : "0",
"Test::CheckManifest" : "1.29",
"Test::EOL" : "0",
"Test::Kwalitee" : "1.22",
"Test::MinimumVersion" : "0",
"Test::Mojibake" : "0",
"Test::More" : "0.94",
"Test::Pod" : "1.41",
"Test::Pod::Coverage" : "1.08",
"Test::Pod::Spelling::CommonMistakes" : "1.000",
"Test::Portability::Files" : "0",
"Test::Spelling" : "0.12",
"Test::Version" : "1",
"Try::Tiny" : "0.24"
},
"suggests" : {
"Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional" : "0.004",
"Dist::Zilla::Plugin::CopyFilesFromRelease" : "0",
"Dist::Zilla::Plugin::Git::Commit" : "2.020",
"Dist::Zilla::Plugin::Git::Tag" : "0",
"Dist::Zilla::Plugin::NextRelease" : "5.033",
"Dist::Zilla::Plugin::RewriteVersion::Transitional" : "0.004"
}
},
"runtime" : {
"requires" : {
"Digest::MD5" : "0",
"Encode" : "2.12",
"Encode::Locale" : "0",
"File::Listing" : "6",
"HTML::Entities" : "0",
"HTML::HeadParser" : "0",
"HTTP::Cookies" : "6",
"HTTP::Daemon" : "6",
"HTTP::Date" : "6",
"HTTP::Negotiate" : "6",
"HTTP::Request" : "6",
"HTTP::Request::Common" : "6",
"HTTP::Response" : "6",
"HTTP::Status" : "6",
"IO::Select" : "0",
"IO::Socket" : "0",
"LWP::MediaTypes" : "6",
"MIME::Base64" : "2.1",
"Net::FTP" : "2.58",
"Net::HTTP" : "6.07",
"Scalar::Util" : "0",
"Try::Tiny" : "0",
"URI" : "1.10",
"URI::Escape" : "0",
"WWW::RobotRules" : "6",
"base" : "0",
"perl" : "5.008001",
"strict" : "0",
"warnings" : "0"
},
"suggests" : {
"Authen::NTLM" : "1.02",
"IO::Socket::INET" : "0",
"LWP::Protocol::https" : "6.02"
}
},
"test" : {
"recommends" : {
"CPAN::Meta" : "2.120900"
},
"requires" : {
"ExtUtils::MakeMaker" : "0",
"File::Spec" : "0",
"FindBin" : "0",
"Test::Fatal" : "0",
"Test::More" : "0",
"Test::RequiresInternet" : "0"
}
}
},
"provides" : {
"LWP" : {
"file" : "lib/LWP.pm",
"version" : "6.31"
},
"LWP::Authen::Basic" : {
"file" : "lib/LWP/Authen/Basic.pm",
"version" : "6.31"
},
"LWP::Authen::Digest" : {
"file" : "lib/LWP/Authen/Digest.pm",
"version" : "6.31"
},
"LWP::Authen::Ntlm" : {
"file" : "lib/LWP/Authen/Ntlm.pm",
"version" : "6.31"
},
"LWP::ConnCache" : {
"file" : "lib/LWP/ConnCache.pm",
"version" : "6.31"
},
"LWP::Debug" : {
"file" : "lib/LWP/Debug.pm",
"version" : "6.31"
},
"LWP::Debug::TraceHTTP" : {
"file" : "lib/LWP/Debug/TraceHTTP.pm",
"version" : "6.31"
},
"LWP::DebugFile" : {
"file" : "lib/LWP/DebugFile.pm",
"version" : "6.31"
},
"LWP::MemberMixin" : {
"file" : "lib/LWP/MemberMixin.pm",
"version" : "6.31"
},
"LWP::Protocol" : {
"file" : "lib/LWP/Protocol.pm",
"version" : "6.31"
},
"LWP::Protocol::cpan" : {
"file" : "lib/LWP/Protocol/cpan.pm",
"version" : "6.31"
},
"LWP::Protocol::data" : {
"file" : "lib/LWP/Protocol/data.pm",
"version" : "6.31"
},
"LWP::Protocol::file" : {
"file" : "lib/LWP/Protocol/file.pm",
"version" : "6.31"
},
"LWP::Protocol::ftp" : {
"file" : "lib/LWP/Protocol/ftp.pm",
"version" : "6.31"
},
"LWP::Protocol::gopher" : {
"file" : "lib/LWP/Protocol/gopher.pm",
"version" : "6.31"
},
"LWP::Protocol::http" : {
"file" : "lib/LWP/Protocol/http.pm",
"version" : "6.31"
},
"LWP::Protocol::loopback" : {
"file" : "lib/LWP/Protocol/loopback.pm",
"version" : "6.31"
},
"LWP::Protocol::mailto" : {
"file" : "lib/LWP/Protocol/mailto.pm",
"version" : "6.31"
},
"LWP::Protocol::nntp" : {
"file" : "lib/LWP/Protocol/nntp.pm",
"version" : "6.31"
},
"LWP::Protocol::nogo" : {
"file" : "lib/LWP/Protocol/nogo.pm",
"version" : "6.31"
},
"LWP::RobotUA" : {
"file" : "lib/LWP/RobotUA.pm",
"version" : "6.31"
},
"LWP::Simple" : {
"file" : "lib/LWP/Simple.pm",
"version" : "6.31"
},
"LWP::UserAgent" : {
"file" : "lib/LWP/UserAgent.pm",
"version" : "6.31"
}
},
"release_status" : "stable",
"resources" : {
"bugtracker" : {
"web" : "https://github.com/libwww-perl/libwww-perl/issues"
},
"homepage" : "https://github.com/libwww-perl/libwww-perl",
"repository" : {
"type" : "git",
"url" : "https://github.com/libwww-perl/libwww-perl.git",
"web" : "https://github.com/libwww-perl/libwww-perl"
},
"x_IRC" : "irc://irc.perl.org/#lwp",
"x_MailingList" : "mailto:libwww@perl.org"
},
"version" : "6.31",
"x_Dist_Zilla" : {
"perl" : {
"version" : "5.027006"
},
"plugins" : [
{
"class" : "Dist::Zilla::Plugin::Git::GatherDir",
"config" : {
"Dist::Zilla::Plugin::GatherDir" : {
"exclude_filename" : [
"LICENSE",
"META.json",
"Makefile.PL",
"README.md"
],
"exclude_match" : [],
"follow_symlinks" : 0,
"include_dotfiles" : 0,
"prefix" : "",
"prune_directory" : [],
"root" : "."
},
"Dist::Zilla::Plugin::Git::GatherDir" : {
"include_untracked" : 0
}
},
"name" : "Git::GatherDir",
"version" : "2.043"
},
{
"class" : "Dist::Zilla::Plugin::MetaConfig",
"name" : "MetaConfig",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::MetaProvides::Package",
"config" : {
"Dist::Zilla::Plugin::MetaProvides::Package" : {
"finder_objects" : [
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : "MetaProvides::Package/AUTOVIV/:InstallModulesPM",
"version" : "6.010"
}
],
"include_underscores" : 0
},
"Dist::Zilla::Role::MetaProvider::Provider" : {
"$Dist::Zilla::Role::MetaProvider::Provider::VERSION" : "2.002004",
"inherit_missing" : 1,
"inherit_version" : 1,
"meta_noindex" : 1
},
"Dist::Zilla::Role::ModuleMetadata" : {
"Module::Metadata" : "1.000033",
"version" : "0.004"
}
},
"name" : "MetaProvides::Package",
"version" : "2.004003"
},
{
"class" : "Dist::Zilla::Plugin::MetaNoIndex",
"name" : "MetaNoIndex",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::MetaYAML",
"name" : "MetaYAML",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::MetaJSON",
"name" : "MetaJSON",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::MetaResources",
"name" : "MetaResources",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::CopyFilesFromBuild",
"name" : "CopyFilesFromBuild",
"version" : "0.170880"
},
{
"class" : "Dist::Zilla::Plugin::Git::Check",
"config" : {
"Dist::Zilla::Plugin::Git::Check" : {
"untracked_files" : "die"
},
"Dist::Zilla::Role::Git::DirtyFiles" : {
"allow_dirty" : [
"LICENSE",
"META.json",
"Makefile.PL"
],
"allow_dirty_match" : [],
"changelog" : "Changes"
},
"Dist::Zilla::Role::Git::Repo" : {
"git_version" : "2.14.2",
"repo_root" : "."
}
},
"name" : "Git::Check",
"version" : "2.043"
},
{
"class" : "Dist::Zilla::Plugin::Git::Contributors",
"config" : {
"Dist::Zilla::Plugin::Git::Contributors" : {
"git_version" : "2.14.2",
"include_authors" : 0,
"include_releaser" : 1,
"order_by" : "name",
"paths" : []
}
},
"name" : "Git::Contributors",
"version" : "0.032"
},
{
"class" : "Dist::Zilla::Plugin::GithubMeta",
"name" : "GithubMeta",
"version" : "0.54"
},
{
"class" : "Dist::Zilla::Plugin::Authority",
"name" : "Authority",
"version" : "1.009"
},
{
"class" : "Dist::Zilla::Plugin::Manifest",
"name" : "Manifest",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::License",
"name" : "License",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::ReadmeAnyFromPod",
"config" : {
"Dist::Zilla::Role::FileWatcher" : {
"version" : "0.006"
}
},
"name" : "Markdown_Readme",
"version" : "0.163250"
},
{
"class" : "Dist::Zilla::Plugin::ExecDir",
"name" : "ExecDir",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::RewriteVersion::Transitional",
"config" : {
"Dist::Zilla::Plugin::PkgVersion" : {},
"Dist::Zilla::Plugin::RewriteVersion" : {
"add_tarball_name" : 0,
"finders" : [
":ExecFiles",
":InstallModules"
],
"global" : 0,
"skip_version_provider" : 0
},
"Dist::Zilla::Plugin::RewriteVersion::Transitional" : {}
},
"name" : "@Git::VersionManager/RewriteVersion::Transitional",
"version" : "0.008"
},
{
"class" : "Dist::Zilla::Plugin::MetaProvides::Update",
"name" : "@Git::VersionManager/MetaProvides::Update",
"version" : "0.002"
},
{
"class" : "Dist::Zilla::Plugin::CopyFilesFromRelease",
"config" : {
"Dist::Zilla::Plugin::CopyFilesFromRelease" : {
"filename" : [
"Changes"
],
"match" : []
}
},
"name" : "@Git::VersionManager/CopyFilesFromRelease",
"version" : "0.007"
},
{
"class" : "Dist::Zilla::Plugin::Git::Commit",
"config" : {
"Dist::Zilla::Plugin::Git::Commit" : {
"add_files_in" : [],
"commit_msg" : "v%v%n%n%c"
},
"Dist::Zilla::Role::Git::DirtyFiles" : {
"allow_dirty" : [
"Changes",
"LICENSE",
"META.json",
"Makefile.PL",
"README.md"
],
"allow_dirty_match" : [],
"changelog" : "Changes"
},
"Dist::Zilla::Role::Git::Repo" : {
"git_version" : "2.14.2",
"repo_root" : "."
},
"Dist::Zilla::Role::Git::StringFormatter" : {
"time_zone" : "local"
}
},
"name" : "@Git::VersionManager/release snapshot",
"version" : "2.043"
},
{
"class" : "Dist::Zilla::Plugin::Git::Tag",
"config" : {
"Dist::Zilla::Plugin::Git::Tag" : {
"branch" : null,
"changelog" : "Changes",
"signed" : 0,
"tag" : "v6.31",
"tag_format" : "v%v",
"tag_message" : "v%v"
},
"Dist::Zilla::Role::Git::Repo" : {
"git_version" : "2.14.2",
"repo_root" : "."
},
"Dist::Zilla::Role::Git::StringFormatter" : {
"time_zone" : "local"
}
},
"name" : "@Git::VersionManager/Git::Tag",
"version" : "2.043"
},
{
"class" : "Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional",
"config" : {
"Dist::Zilla::Plugin::BumpVersionAfterRelease" : {
"finders" : [
":ExecFiles",
":InstallModules"
],
"global" : 0,
"munge_makefile_pl" : 1
},
"Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional" : {}
},
"name" : "@Git::VersionManager/BumpVersionAfterRelease::Transitional",
"version" : "0.008"
},
{
"class" : "Dist::Zilla::Plugin::NextRelease",
"name" : "@Git::VersionManager/NextRelease",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::Git::Commit",
"config" : {
"Dist::Zilla::Plugin::Git::Commit" : {
"add_files_in" : [],
"commit_msg" : "increment $VERSION after %v release"
},
"Dist::Zilla::Role::Git::DirtyFiles" : {
"allow_dirty" : [
"Changes",
"Makefile.PL"
],
"allow_dirty_match" : [
"(?^:^lib/.*\\.pm$)"
],
"changelog" : "Changes"
},
"Dist::Zilla::Role::Git::Repo" : {
"git_version" : "2.14.2",
"repo_root" : "."
},
"Dist::Zilla::Role::Git::StringFormatter" : {
"time_zone" : "local"
}
},
"name" : "@Git::VersionManager/post-release commit",
"version" : "2.043"
},
{
"class" : "Dist::Zilla::Plugin::Prereqs",
"config" : {
"Dist::Zilla::Plugin::Prereqs" : {
"phase" : "develop",
"type" : "suggests"
}
},
"name" : "@Git::VersionManager/prereqs for @Git::VersionManager",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::Prereqs::FromCPANfile",
"name" : "Prereqs::FromCPANfile",
"version" : "0.08"
},
{
"class" : "Dist::Zilla::Plugin::MakeMaker::Awesome",
"config" : {
"Dist::Zilla::Plugin::MakeMaker" : {
"make_path" : "make",
"version" : "6.010"
},
"Dist::Zilla::Role::TestRunner" : {
"default_jobs" : 1,
"version" : "6.010"
}
},
"name" : "MakeMaker::Awesome",
"version" : "0.39"
},
{
"class" : "Dist::Zilla::Plugin::TestRelease",
"name" : "TestRelease",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::ConfirmRelease",
"name" : "ConfirmRelease",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::UploadToCPAN",
"name" : "UploadToCPAN",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::CheckChangeLog",
"name" : "CheckChangeLog",
"version" : "0.05"
},
{
"class" : "Dist::Zilla::Plugin::CheckChangesHasContent",
"name" : "CheckChangesHasContent",
"version" : "0.011"
},
{
"class" : "Dist::Zilla::Plugin::MojibakeTests",
"name" : "MojibakeTests",
"version" : "0.8"
},
{
"class" : "Dist::Zilla::Plugin::Test::Version",
"name" : "Test::Version",
"version" : "1.09"
},
{
"class" : "Dist::Zilla::Plugin::Test::ReportPrereqs",
"name" : "Test::ReportPrereqs",
"version" : "0.027"
},
{
"class" : "Dist::Zilla::Plugin::Test::Compile",
"config" : {
"Dist::Zilla::Plugin::Test::Compile" : {
"bail_out_on_fail" : "1",
"fail_on_warning" : "author",
"fake_home" : 0,
"filename" : "xt/author/00-compile.t",
"module_finder" : [
":InstallModules"
],
"needs_display" : 0,
"phase" : "develop",
"script_finder" : [
":PerlExecFiles"
],
"skips" : [],
"switch" : []
}
},
"name" : "Test::Compile",
"version" : "2.057"
},
{
"class" : "Dist::Zilla::Plugin::Test::Portability",
"config" : {
"Dist::Zilla::Plugin::Test::Portability" : {
"options" : ""
}
},
"name" : "Test::Portability",
"version" : "2.001000"
},
{
"class" : "Dist::Zilla::Plugin::Test::EOL",
"config" : {
"Dist::Zilla::Plugin::Test::EOL" : {
"filename" : "xt/author/eol.t",
"finder" : [
":ExecFiles",
":InstallModules",
":TestFiles"
],
"trailing_whitespace" : 1
}
},
"name" : "Test::EOL",
"version" : "0.19"
},
{
"class" : "Dist::Zilla::Plugin::MetaTests",
"name" : "MetaTests",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::Test::ChangesHasContent",
"name" : "Test::ChangesHasContent",
"version" : "0.011"
},
{
"class" : "Dist::Zilla::Plugin::Test::MinimumVersion",
"name" : "Test::MinimumVersion",
"version" : "2.000007"
},
{
"class" : "Dist::Zilla::Plugin::PodSyntaxTests",
"name" : "PodSyntaxTests",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::Test::Pod::Coverage::Configurable",
"name" : "Test::Pod::Coverage::Configurable",
"version" : "0.06"
},
{
"class" : "Dist::Zilla::Plugin::Test::PodSpelling",
"config" : {
"Dist::Zilla::Plugin::Test::PodSpelling" : {
"directories" : [
"bin",
"lib"
],
"spell_cmd" : "aspell list",
"stopwords" : [
"Accomazzi",
"Alexandre",
"Andreas",
"Asplund",
"Betts",
"Bochner",
"BooK",
"Buenzli",
"CGI",
"CPAN",
"Chamas",
"Coppit",
"Dalgleish",
"Dubois",
"Dunkin",
"Duret",
"Dvornik",
"Eldridge",
"Gertjan",
"Graaff",
"Greab",
"Guenther",
"Gurusamy",
"Gustafsson",
"Hakanson",
"Harald",
"Hedlund",
"Hoblitt",
"Hwa",
"INOUE",
"Joao",
"Joerg",
"KONISHI",
"Kaminsky",
"Kartik",
"Katsuhiro",
"Kebsch",
"Keiichiro",
"Kilzer",
"Klar",
"Koster",
"Kronengold",
"Kr\u00fcger",
"Kubb",
"K\u00f6nig",
"Laker",
"Langfeldt",
"Langheinrich",
"Liam",
"Lindley",
"Lotterer",
"Lutz",
"MacEachern",
"Macdonald",
"Mailto",
"Marko",
"Markus",
"Martijn",
"McCauley",
"Melchner",
"Moshe",
"Murrell",
"NNTP",
"NTLM",
"Nagano",
"Newby",
"Nicolai",
"Nierstrasz",
"Olly",
"Oosten",
"Panchenko",
"Pimlott",
"Pon",
"Quaranta",
"Radoslaw",
"Radu",
"Rai",
"Rezic",
"RobotUA",
"Sarathy",
"Schilli",
"Schinder",
"Shirazi",
"Skytt\u00e4",
"Slaven",
"Spafford",
"Stosberg",
"Subbarao",
"TCP",
"Takanori",
"Thoennes",
"Thurn",
"Tilly",
"UA",
"Ugai",
"Unger",
"UserAgent",
"VanHeyningen",
"Vandewege",
"Ville",
"WireShark",
"Yee",
"Yitzchak",
"Yoshinari",
"Zajac",
"Zakharevich",
"Zielinski",
"Zoest",
"afPuUsSedvhx",
"de",
"erik",
"getprint",
"getstore",
"peterm",
"shildreth"
],
"wordlist" : "Pod::Wordlist"
}
},
"name" : "Test::PodSpelling",
"version" : "2.007004"
},
{
"class" : "Dist::Zilla::Plugin::RunExtraTests",
"config" : {
"Dist::Zilla::Role::TestRunner" : {
"default_jobs" : 1
}
},
"name" : "RunExtraTests",
"version" : "0.029"
},
{
"class" : "Dist::Zilla::Plugin::CheckStrictVersion",
"name" : "CheckStrictVersion",
"version" : "0.001"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":InstallModules",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":IncModules",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":TestFiles",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":ExtraTestFiles",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":ExecFiles",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":PerlExecFiles",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":ShareFiles",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":MainModule",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":AllFiles",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":NoFiles",
"version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : "MetaProvides::Package/AUTOVIV/:InstallModulesPM",
"version" : "6.010"
}
],
"zilla" : {
"class" : "Dist::Zilla::Dist::Builder",
"config" : {
"is_trial" : 0
},
"version" : "6.010"
}
},
"x_authority" : "cpan:LWWWP",
"x_contributors" : [
"Adam Kennedy ",
"Adam Sjogren ",
"Alexey Tourbin ",
"Alex Kapranoff ",
"amire80 ",
"Andreas J. Koenig ",
"BGMNT ",
"Bill Mann ",
"Bron Gondwana ",
"Bryan Cardillo ",
"Chase Whitener ",
"Christopher J. Madsen ",
"Daina Pettit ",
"Daniel Hedlund ",
"David E. Wheeler ",
"DAVIDRW ",
"David Standish ",
"David Steinbrunner ",
"Fabian Zeindler ",
"Father Chrysostomos ",
"FWILES ",
"Gavin Peters ",
"Gerhard Poul ",
"Gianni Ceccarelli ",
"Gisle Aas ",
"Graeme Thompson