Hello community, here is the log from the commit of package perl-HTTP-Message for openSUSE:Factory checked in at 2015-07-16 17:16:15 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-HTTP-Message (Old) and /work/SRC/openSUSE:Factory/.perl-HTTP-Message.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-HTTP-Message" Changes: -------- --- /work/SRC/openSUSE:Factory/perl-HTTP-Message/perl-HTTP-Message.changes 2013-08-13 10:17:48.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.perl-HTTP-Message.new/perl-HTTP-Message.changes 2015-07-16 17:16:16.000000000 +0200 @@ -1,0 +2,33 @@ +Mon Jul 13 08:40:20 UTC 2015 - [email protected] + +- updated to 6.08 + see /usr/share/doc/packages/perl-HTTP-Message/Changes + + Revision history for HTTP-Message + + 6.08 2015-07-10 + - Resolve new uninitialized warning from + HTTP::Request::Common::request_type_with_data (RT#105787) + + + 6.07 2015-07-09 + + - Allow subclasses to override the class of parts - it used to be + hardcoded to HTTP::Message. (Gisle Aas, RT#79239) + + - Added support for is_client_error, is_server_error to HTTP::Response + (Karen Etheridge) + + - Added flatten interface to HTTP::Headers (Tokuhiro Matsuno, GH#5) + + - Allow PUT to pass content data via hashrefs just like with POST (Michael + Schilli, GH#9) + + - Fix for "Content-Encoding: none" header (Gisle Aas, RT#94882) + + - Add support for HTTP status 308, defined in RFC 7238 (Olivier Mengué, + RT#104102) + + - drop the use of "use vars" (Karen Etheridge) + +------------------------------------------------------------------- Old: ---- HTTP-Message-6.06.tar.gz New: ---- HTTP-Message-6.08.tar.gz cpanspec.yml ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-HTTP-Message.spec ++++++ --- /var/tmp/diff_new_pack.kadL8I/_old 2015-07-16 17:16:17.000000000 +0200 +++ /var/tmp/diff_new_pack.kadL8I/_new 2015-07-16 17:16:17.000000000 +0200 @@ -1,7 +1,7 @@ # # spec file for package perl-HTTP-Message # -# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,14 +17,15 @@ Name: perl-HTTP-Message -Version: 6.06 +Version: 6.08 Release: 0 %define cpan_name HTTP-Message Summary: HTTP style message (base class) License: Artistic-1.0 or GPL-1.0+ Group: Development/Libraries/Perl Url: http://search.cpan.org/dist/HTTP-Message/ -Source: http://www.cpan.org/authors/id/G/GA/GAAS/%{cpan_name}-%{version}.tar.gz +Source0: http://www.cpan.org/authors/id/E/ET/ETHER/%{cpan_name}-%{version}.tar.gz +Source1: cpanspec.yml BuildArch: noarch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: perl @@ -43,16 +44,6 @@ BuildRequires: perl(IO::Uncompress::RawInflate) BuildRequires: perl(LWP::MediaTypes) >= 6 BuildRequires: perl(URI) >= 1.10 -#BuildRequires: perl(HTTP::Config) -#BuildRequires: perl(HTTP::Headers) -#BuildRequires: perl(HTTP::Headers::Auth) -#BuildRequires: perl(HTTP::Headers::ETag) -#BuildRequires: perl(HTTP::Headers::Util) -#BuildRequires: perl(HTTP::Message) -#BuildRequires: perl(HTTP::Request) -#BuildRequires: perl(HTTP::Request::Common) -#BuildRequires: perl(HTTP::Response) -#BuildRequires: perl(HTTP::Status) Requires: perl(Compress::Raw::Zlib) Requires: perl(Encode) >= 2.21 Requires: perl(Encode::Locale) >= 1 @@ -70,7 +61,313 @@ %{perl_requires} %description -An 'HTTP::Message' object contains some headers and a content body. +An 'HTTP::Message' object contains some headers and a content body. The +following methods are available: + +* $mess = HTTP::Message->new + +* $mess = HTTP::Message->new( $headers ) + +* $mess = HTTP::Message->new( $headers, $content ) + + This constructs a new message object. Normally you would want construct + 'HTTP::Request' or 'HTTP::Response' objects instead. + + The optional $header argument should be a reference to an 'HTTP::Headers' + object or a plain array reference of key/value pairs. If an + 'HTTP::Headers' object is provided then a copy of it will be embedded + into the constructed message, i.e. it will not be owned and can be + modified afterwards without affecting the message. + + The optional $content argument should be a string of bytes. + +* $mess = HTTP::Message->parse( $str ) + + This constructs a new message object by parsing the given string. + +* $mess->headers + + Returns the embedded 'HTTP::Headers' object. + +* $mess->headers_as_string + +* $mess->headers_as_string( $eol ) + + Call the as_string() method for the headers in the message. This will be + the same as + + $mess->headers->as_string + + but it will make your program a whole character shorter :-) + +* $mess->content + +* $mess->content( $bytes ) + + The content() method sets the raw content if an argument is given. If no + argument is given the content is not touched. In either case the original + raw content is returned. + + Note that the content should be a string of bytes. Strings in perl can + contain characters outside the range of a byte. The 'Encode' module can + be used to turn such strings into a string of bytes. + +* $mess->add_content( $bytes ) + + The add_content() methods appends more data bytes to the end of the + current content buffer. + +* $mess->add_content_utf8( $string ) + + The add_content_utf8() method appends the UTF-8 bytes representing the + string to the end of the current content buffer. + +* $mess->content_ref + +* $mess->content_ref( \$bytes ) + + The content_ref() method will return a reference to content buffer + string. It can be more efficient to access the content this way if the + content is huge, and it can even be used for direct manipulation of the + content, for instance: + + ${$res->content_ref} =~ s/\bfoo\b/bar/g; + + This example would modify the content buffer in-place. + + If an argument is passed it will setup the content to reference some + external source. The content() and add_content() methods will + automatically dereference scalar references passed this way. For other + references content() will return the reference itself and add_content() + will refuse to do anything. + +* $mess->content_charset + + This returns the charset used by the content in the message. The charset + is either found as the charset attribute of the 'Content-Type' header or + by guessing. + + See the http://www.w3.org/TR/REC-html40/charset.html#spec-char-encoding + manpage for details about how charset is determined. + +* $mess->decoded_content( %options ) + + Returns the content with any 'Content-Encoding' undone and for textual + content the raw content encoded to Perl's Unicode strings. If the + 'Content-Encoding' or 'charset' of the message is unknown this method + will fail by returning 'undef'. + + The following options can be specified. + + * 'charset' + + This override the charset parameter for text content. The value 'none' + can used to suppress decoding of the charset. + + * 'default_charset' + + This override the default charset guessed by content_charset() or if + that fails "ISO-8859-1". + + * 'alt_charset' + + If decoding fails because the charset specified in the Content-Type + header isn't recognized by Perl's Encode module, then try decoding + using this charset instead of failing. The 'alt_charset' might be + specified as 'none' to simply return the string without any decoding of + charset as alternative. + + * 'charset_strict' + + Abort decoding if malformed characters is found in the content. By + default you get the substitution character ("\x{FFFD}") in place of + malformed characters. + + * 'raise_error' + + If TRUE then raise an exception if not able to decode content. Reason + might be that the specified 'Content-Encoding' or 'charset' is not + supported. If this option is FALSE, then decoded_content() will return + 'undef' on errors, but will still set $@. + + * 'ref' + + If TRUE then a reference to decoded content is returned. This might be + more efficient in cases where the decoded content is identical to the + raw content as no data copying is required in this case. + +* $mess->decodable + +* HTTP::Message::decodable() + + This returns the encoding identifiers that decoded_content() can process. + In scalar context returns a comma separated string of identifiers. + + This value is suitable for initializing the 'Accept-Encoding' request + header field. + +* $mess->decode + + This method tries to replace the content of the message with the decoded + version and removes the 'Content-Encoding' header. Returns TRUE if + successful and FALSE if not. + + If the message does not have a 'Content-Encoding' header this method does + nothing and returns TRUE. + + Note that the content of the message is still bytes after this method has + been called and you still need to call decoded_content() if you want to + process its content as a string. + +* $mess->encode( $encoding, ... ) + + Apply the given encodings to the content of the message. Returns TRUE if + successful. The "identity" (non-)encoding is always supported; other + currently supported encodings, subject to availability of required + additional modules, are "gzip", "deflate", "x-bzip2" and "base64". + + A successful call to this function will set the 'Content-Encoding' + header. + + Note that 'multipart/*' or 'message/*' messages can't be encoded and this + method will croak if you try. + +* $mess->parts + +* $mess->parts( @parts ) + +* $mess->parts( \@parts ) + + Messages can be composite, i.e. contain other messages. The composite + messages have a content type of 'multipart/*' or 'message/*'. This method + give access to the contained messages. + + The argumentless form will return a list of 'HTTP::Message' objects. If + the content type of $msg is not 'multipart/*' or 'message/*' then this + will return the empty list. In scalar context only the first object is + returned. The returned message parts should be regarded as read-only + (future versions of this library might make it possible to modify the + parent by modifying the parts). + + If the content type of $msg is 'message/*' then there will only be one + part returned. + + If the content type is 'message/http', then the return value will be + either an 'HTTP::Request' or an 'HTTP::Response' object. + + If a @parts argument is given, then the content of the message will be + modified. The array reference form is provided so that an empty list can + be provided. The @parts array should contain 'HTTP::Message' objects. The + @parts objects are owned by $mess after this call and should not be + modified or made part of other messages. + + When updating the message with this method and the old content type of + $mess is not 'multipart/*' or 'message/*', then the content type is set + to 'multipart/mixed' and all other content headers are cleared. + + This method will croak if the content type is 'message/*' and more than + one part is provided. + +* $mess->add_part( $part ) + + This will add a part to a message. The $part argument should be another + 'HTTP::Message' object. If the previous content type of $mess is not + 'multipart/*' then the old content (together with all content headers) + will be made part #1 and the content type made 'multipart/mixed' before + the new part is added. The $part object is owned by $mess after this call + and should not be modified or made part of other messages. + + There is no return value. + +* $mess->clear + + Will clear the headers and set the content to the empty string. There is + no return value + +* $mess->protocol + +* $mess->protocol( $proto ) + + Sets the HTTP protocol used for the message. The protocol() is a string + like 'HTTP/1.0' or 'HTTP/1.1'. + +* $mess->clone + + Returns a copy of the message object. + +* $mess->as_string + +* $mess->as_string( $eol ) + + Returns the message formatted as a single string. + + The optional $eol parameter specifies the line ending sequence to use. + The default is "\n". If no $eol is given then as_string will ensure that + the returned string is newline terminated (even when the message content + is not). No extra newline is appended if an explicit $eol is passed. + +* $mess->dump( %opt ) + + Returns the message formatted as a string. In void context print the + string. + + This differs from '$mess->as_string' in that it escapes the bytes of the + content so that it's safe to print them and it limits how much content to + print. The escapes syntax used is the same as for Perl's double quoted + strings. If there is no content the string "(no content)" is shown in its + place. + + Options to influence the output can be passed as key/value pairs. The + following options are recognized: + + * maxlength => $num + + How much of the content to show. The default is 512. Set this to 0 for + unlimited. + + If the content is longer then the string is chopped at the limit and + the string "...\n(### more bytes not shown)" appended. + + * no_content => $str + + Replaces the "(no content)" marker. + + * prefix => $str + + A string that will be prefixed to each line of the dump. + +All methods unknown to 'HTTP::Message' itself are delegated to the +'HTTP::Headers' object that is part of every message. This allows +convenient access to these methods. Refer to the HTTP::Headers manpage for +details of these methods: + + $mess->header( $field => $val ) + $mess->push_header( $field => $val ) + $mess->init_header( $field => $val ) + $mess->remove_header( $field ) + $mess->remove_content_headers + $mess->header_field_names + $mess->scan( \&doit ) + + $mess->date + $mess->expires + $mess->if_modified_since + $mess->if_unmodified_since + $mess->last_modified + $mess->content_type + $mess->content_encoding + $mess->content_length + $mess->content_language + $mess->title + $mess->user_agent + $mess->server + $mess->from + $mess->referer + $mess->www_authenticate + $mess->authorization + $mess->proxy_authorization + $mess->authorization_basic + $mess->proxy_authorization_basic %prep %setup -q -n %{cpan_name}-%{version} @@ -89,6 +386,6 @@ %files -f %{name}.files %defattr(-,root,root,755) -%doc Changes README +%doc Changes LICENSE README %changelog ++++++ HTTP-Message-6.06.tar.gz -> HTTP-Message-6.08.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/Changes new/HTTP-Message-6.08/Changes --- old/HTTP-Message-6.06/Changes 2012-10-21 00:06:27.000000000 +0200 +++ new/HTTP-Message-6.08/Changes 2015-07-10 05:05:15.000000000 +0200 @@ -1,3 +1,31 @@ +Revision history for HTTP-Message + +6.08 2015-07-10 + - Resolve new uninitialized warning from + HTTP::Request::Common::request_type_with_data (RT#105787) + + +6.07 2015-07-09 + + - Allow subclasses to override the class of parts - it used to be + hardcoded to HTTP::Message. (Gisle Aas, RT#79239) + + - Added support for is_client_error, is_server_error to HTTP::Response + (Karen Etheridge) + + - Added flatten interface to HTTP::Headers (Tokuhiro Matsuno, GH#5) + + - Allow PUT to pass content data via hashrefs just like with POST (Michael + Schilli, GH#9) + + - Fix for "Content-Encoding: none" header (Gisle Aas, RT#94882) + + - Add support for HTTP status 308, defined in RFC 7238 (Olivier Mengué, + RT#104102) + + - drop the use of "use vars" (Karen Etheridge) + + _______________________________________________________________________________ 2012-10-21 HTTP-Message 6.06 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/LICENSE new/HTTP-Message-6.08/LICENSE --- old/HTTP-Message-6.06/LICENSE 1970-01-01 01:00:00.000000000 +0100 +++ new/HTTP-Message-6.08/LICENSE 2015-07-09 01:14:01.000000000 +0200 @@ -0,0 +1,379 @@ +This software is copyright (c) 1994 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) 1994 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. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + 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. + + <signature of Ty Coon>, 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) 1994 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 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/MANIFEST new/HTTP-Message-6.08/MANIFEST --- old/HTTP-Message-6.06/MANIFEST 2012-10-21 00:06:58.000000000 +0200 +++ new/HTTP-Message-6.08/MANIFEST 2015-07-10 05:05:21.000000000 +0200 @@ -9,8 +9,10 @@ lib/HTTP/Request/Common.pm lib/HTTP/Response.pm lib/HTTP/Status.pm +LICENSE Makefile.PL MANIFEST This list of files +MANIFEST.SKIP README t/common-req.t t/headers-auth.t @@ -24,7 +26,9 @@ t/message-parts.t t/message.t t/request.t +t/request_type_with_data.t t/response.t t/status-old.t t/status.t -META.yml Module meta-data (added by MakeMaker) +META.yml Module YAML meta-data (added by MakeMaker) +META.json Module JSON meta-data (added by MakeMaker) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/MANIFEST.SKIP new/HTTP-Message-6.08/MANIFEST.SKIP --- old/HTTP-Message-6.06/MANIFEST.SKIP 1970-01-01 01:00:00.000000000 +0100 +++ new/HTTP-Message-6.08/MANIFEST.SKIP 2015-07-10 05:05:16.000000000 +0200 @@ -0,0 +1,71 @@ + +#!start included /Volumes/amaretto/Users/ether/perl5/perlbrew/perls/23.0/lib/5.23.0/ExtUtils/MANIFEST.SKIP +# Avoid version control files. +\bRCS\b +\bCVS\b +\bSCCS\b +,v$ +\B\.svn\b +\B\.git\b +\B\.gitignore\b +\b_darcs\b +\B\.cvsignore$ + +# Avoid VMS specific MakeMaker generated files +\bDescrip.MMS$ +\bDESCRIP.MMS$ +\bdescrip.mms$ + +# Avoid Makemaker generated and utility files. +\bMANIFEST\.bak +\bMakefile$ +\bblib/ +\bMakeMaker-\d +\bpm_to_blib\.ts$ +\bpm_to_blib$ +\bblibdirs\.ts$ # 6.18 through 6.25 generated this +\b_eumm/ # 7.05_05 and above + +# Avoid Module::Build generated and utility files. +\bBuild$ +\b_build/ +\bBuild.bat$ +\bBuild.COM$ +\bBUILD.COM$ +\bbuild.com$ + +# and Module::Build::Tiny generated files +\b_build_params$ + +# Avoid temp and backup files. +~$ +\.old$ +\#$ +\b\.# +\.bak$ +\.tmp$ +\.# +\.rej$ +\..*\.sw.?$ + +# Avoid OS-specific files/dirs +# Mac OSX metadata +\B\.DS_Store +# Mac OSX SMB mount metadata files +\B\._ + +# Avoid Devel::Cover and Devel::CoverX::Covered files. +\bcover_db\b +\bcovered\b + +# Avoid prove files +\B\.prove$ + +# Avoid MYMETA files +^MYMETA\. +#!end included /Volumes/amaretto/Users/ether/perl5/perlbrew/perls/23.0/lib/5.23.0/ExtUtils/MANIFEST.SKIP + + +^HTTP-Message-.*/ +^HTTP-Message-.*.tar.gz +^\.ackrc$ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/META.json new/HTTP-Message-6.08/META.json --- old/HTTP-Message-6.06/META.json 1970-01-01 01:00:00.000000000 +0100 +++ new/HTTP-Message-6.08/META.json 2015-07-10 05:05:21.000000000 +0200 @@ -0,0 +1,78 @@ +{ + "abstract" : "HTTP style messages", + "author" : [ + "Gisle Aas <[email protected]>" + ], + "dynamic_config" : 0, + "generated_by" : "ExtUtils::MakeMaker version 7.0524, CPAN::Meta::Converter version 2.150005", + "license" : [ + "perl_5" + ], + "meta-spec" : { + "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", + "version" : "2" + }, + "name" : "HTTP-Message", + "no_index" : { + "directory" : [ + "t", + "inc" + ] + }, + "prereqs" : { + "build" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "configure" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "runtime" : { + "requires" : { + "Compress::Raw::Zlib" : "0", + "Encode" : "2.21", + "Encode::Locale" : "1", + "Exporter" : "5.57", + "HTTP::Date" : "6", + "IO::Compress::Bzip2" : "2.021", + "IO::Compress::Deflate" : "0", + "IO::Compress::Gzip" : "0", + "IO::HTML" : "0", + "IO::Uncompress::Bunzip2" : "2.021", + "IO::Uncompress::Gunzip" : "0", + "IO::Uncompress::Inflate" : "0", + "IO::Uncompress::RawInflate" : "0", + "LWP::MediaTypes" : "6", + "MIME::Base64" : "2.1", + "MIME::QuotedPrint" : "0", + "URI" : "1.10", + "perl" : "5.008001" + } + }, + "test" : { + "requires" : { + "Test" : "0" + } + } + }, + "release_status" : "stable", + "resources" : { + "bugtracker" : { + "mailto" : "[email protected]", + "web" : "https://rt.cpan.org/Public/Dist/Display.html?Name=HTTP-Message" + }, + "repository" : { + "type" : "git", + "url" : "https://github.com/libwww-perl/HTTP-Message.git", + "web" : "https://github.com/libwww-perl/HTTP-Message" + }, + "x_IRC" : "irc://irc.perl.org/#lwp", + "x_MailingList" : "mailto:[email protected]" + }, + "version" : "6.08", + "x_serialization_backend" : "JSON::PP version 2.27300" +} + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/META.yml new/HTTP-Message-6.08/META.yml --- old/HTTP-Message-6.06/META.yml 2012-10-21 00:06:58.000000000 +0200 +++ new/HTTP-Message-6.08/META.yml 2015-07-10 05:05:21.000000000 +0200 @@ -1,41 +1,47 @@ ---- #YAML:1.0 -name: HTTP-Message -version: 6.06 -abstract: HTTP style messages +--- +abstract: 'HTTP style messages' author: - - Gisle Aas <[email protected]> -license: perl -distribution_type: module -configure_requires: - ExtUtils::MakeMaker: 0 + - 'Gisle Aas <[email protected]>' build_requires: - ExtUtils::MakeMaker: 0 + ExtUtils::MakeMaker: '0' + Test: '0' +configure_requires: + ExtUtils::MakeMaker: '0' +dynamic_config: 0 +generated_by: 'ExtUtils::MakeMaker version 7.0524, CPAN::Meta::Converter version 2.150005' +license: perl +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: '1.4' +name: HTTP-Message +no_index: + directory: + - t + - inc requires: - Compress::Raw::Zlib: 0 - Encode: 2.21 - Encode::Locale: 1 - HTTP::Date: 6 - IO::Compress::Bzip2: 2.021 - IO::Compress::Deflate: 0 - IO::Compress::Gzip: 0 - IO::HTML: 0 - IO::Uncompress::Bunzip2: 2.021 - IO::Uncompress::Gunzip: 0 - IO::Uncompress::Inflate: 0 - IO::Uncompress::RawInflate: 0 - LWP::MediaTypes: 6 - MIME::Base64: 2.1 - MIME::QuotedPrint: 0 - perl: 5.008001 - URI: 1.10 + Compress::Raw::Zlib: '0' + Encode: '2.21' + Encode::Locale: '1' + Exporter: '5.57' + HTTP::Date: '6' + IO::Compress::Bzip2: '2.021' + IO::Compress::Deflate: '0' + IO::Compress::Gzip: '0' + IO::HTML: '0' + IO::Uncompress::Bunzip2: '2.021' + IO::Uncompress::Gunzip: '0' + IO::Uncompress::Inflate: '0' + IO::Uncompress::RawInflate: '0' + LWP::MediaTypes: '6' + MIME::Base64: '2.1' + MIME::QuotedPrint: '0' + URI: '1.10' + perl: '5.008001' resources: - MailingList: mailto:[email protected] - repository: http://github.com/libwww-perl/http-message -no_index: - directory: - - t - - inc -generated_by: ExtUtils::MakeMaker version 6.57_05 -meta-spec: - url: http://module-build.sourceforge.net/META-spec-v1.4.html - version: 1.4 + IRC: irc://irc.perl.org/#lwp + MailingList: mailto:[email protected] + bugtracker: https://rt.cpan.org/Public/Dist/Display.html?Name=HTTP-Message + repository: https://github.com/libwww-perl/HTTP-Message.git +version: '6.08' +x_serialization_backend: 'CPAN::Meta::YAML version 0.016' + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/Makefile.PL new/HTTP-Message-6.08/Makefile.PL --- old/HTTP-Message-6.06/Makefile.PL 2012-05-27 13:38:08.000000000 +0200 +++ new/HTTP-Message-6.08/Makefile.PL 2015-07-09 22:28:51.000000000 +0200 @@ -1,16 +1,15 @@ -#!perl -w - require 5.008001; use strict; -use ExtUtils::MakeMaker; +use warnings; +use ExtUtils::MakeMaker; -WriteMakefile( +my %WriteMakefileArgs = ( NAME => 'HTTP::Message', VERSION_FROM => 'lib/HTTP/Message.pm', ABSTRACT => 'HTTP style messages', AUTHOR => 'Gisle Aas <[email protected]>', - LICENSE => "perl", + LICENSE => 'perl_5', MIN_PERL_VERSION => 5.008001, PREREQ_PM => { 'URI' => "1.10", @@ -29,34 +28,60 @@ 'IO::Uncompress::Inflate' => 0, 'IO::Uncompress::RawInflate' => 0, 'IO::Uncompress::Bunzip2' => '2.021', + 'Exporter' => '5.57', + }, + TEST_REQUIRES => { + 'Test' => '0', }, + META_MERGE => { - resources => { - repository => 'http://github.com/libwww-perl/http-message', - MailingList => 'mailto:[email protected]', - } + 'meta-spec' => { version => 2 }, + dynamic_config => 0, + resources => { + repository => { + url => 'https://github.com/libwww-perl/HTTP-Message.git', + web => 'https://github.com/libwww-perl/HTTP-Message', + type => 'git', + }, + bugtracker => { + mailto => '[email protected]', + web => 'https://rt.cpan.org/Public/Dist/Display.html?Name=HTTP-Message', + }, + x_MailingList => 'mailto:[email protected]', + x_IRC => 'irc://irc.perl.org/#lwp', + }, }, ); +# compatibility with older versions of MakeMaker +my $developer = -f ".gitignore"; + +die 'need to do a merge with CPAN::Meta::Requirements!!' + if $developer && exists $WriteMakefileArgs{BUILD_REQUIRES}; -BEGIN { - # compatibility with older versions of MakeMaker - my $developer = -f ".gitignore"; - my %mm_req = ( - LICENCE => 6.31, - META_MERGE => 6.45, - META_ADD => 6.45, - MIN_PERL_VERSION => 6.48, - ); - undef(*WriteMakefile); - *WriteMakefile = sub { - my %arg = @_; - for (keys %mm_req) { - unless (eval { ExtUtils::MakeMaker->VERSION($mm_req{$_}) }) { - warn "$_ $@" if $developer; - delete $arg{$_}; - } - } - ExtUtils::MakeMaker::WriteMakefile(%arg); - }; +if (!eval { ExtUtils::MakeMaker->VERSION('6.6303') }) { + $WriteMakefileArgs{BUILD_REQUIRES} = $WriteMakefileArgs{TEST_REQUIRES}; + delete $WriteMakefileArgs{TEST_REQUIRES}; } + +if (!eval { ExtUtils::MakeMaker->VERSION('6.5501') }) { + @{$WriteMakefileArgs{PREREQ_PM}}{ keys %{$WriteMakefileArgs{BUILD_REQUIRES}} } = + @{$WriteMakefileArgs{BUILD_REQUIRES}}{ keys %{$WriteMakefileArgs{BUILD_REQUIRES}} }; + + delete $WriteMakefileArgs{BUILD_REQUIRES}; +} + +my %mm_req = ( + LICENCE => 6.31, + META_MERGE => 6.45, + META_ADD => 6.45, + MIN_PERL_VERSION => 6.48, +); +for (keys %mm_req) { + unless (eval { ExtUtils::MakeMaker->VERSION($mm_req{$_}) }) { + warn "$_ $@" if $developer; + delete $WriteMakefileArgs{$_}; + } +} + +WriteMakefile(%WriteMakefileArgs); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/lib/HTTP/Config.pm new/HTTP-Message-6.08/lib/HTTP/Config.pm --- old/HTTP-Message-6.06/lib/HTTP/Config.pm 2012-02-15 20:28:25.000000000 +0100 +++ new/HTTP-Message-6.08/lib/HTTP/Config.pm 2015-07-09 22:29:06.000000000 +0200 @@ -1,10 +1,11 @@ package HTTP::Config; use strict; +use warnings; + use URI; -use vars qw($VERSION); -$VERSION = "6.00"; +our $VERSION = "6.08"; sub new { my $class = shift; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/lib/HTTP/Headers/Auth.pm new/HTTP-Message-6.08/lib/HTTP/Headers/Auth.pm --- old/HTTP-Message-6.06/lib/HTTP/Headers/Auth.pm 2012-02-15 20:28:25.000000000 +0100 +++ new/HTTP-Message-6.08/lib/HTTP/Headers/Auth.pm 2015-07-09 22:29:58.000000000 +0200 @@ -1,12 +1,14 @@ package HTTP::Headers::Auth; use strict; -use vars qw($VERSION); -$VERSION = "6.00"; +use warnings; + +our $VERSION = "6.08"; use HTTP::Headers; -package HTTP::Headers; +package + HTTP::Headers; BEGIN { # we provide a new (and better) implementations below diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/lib/HTTP/Headers/ETag.pm new/HTTP-Message-6.08/lib/HTTP/Headers/ETag.pm --- old/HTTP-Message-6.06/lib/HTTP/Headers/ETag.pm 2012-02-15 20:28:25.000000000 +0100 +++ new/HTTP-Message-6.08/lib/HTTP/Headers/ETag.pm 2015-07-09 22:30:19.000000000 +0200 @@ -1,13 +1,15 @@ package HTTP::Headers::ETag; use strict; -use vars qw($VERSION); -$VERSION = "6.00"; +use warnings; + +our $VERSION = "6.08"; require HTTP::Date; require HTTP::Headers; -package HTTP::Headers; +package + HTTP::Headers; sub _etags { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/lib/HTTP/Headers/Util.pm new/HTTP-Message-6.08/lib/HTTP/Headers/Util.pm --- old/HTTP-Message-6.06/lib/HTTP/Headers/Util.pm 2012-02-16 23:14:03.000000000 +0100 +++ new/HTTP-Message-6.08/lib/HTTP/Headers/Util.pm 2015-07-09 22:29:06.000000000 +0200 @@ -1,15 +1,13 @@ package HTTP::Headers::Util; use strict; -use vars qw($VERSION @ISA @EXPORT_OK); +use warnings; -$VERSION = "6.03"; +our $VERSION = "6.08"; -require Exporter; -@ISA=qw(Exporter); - -@EXPORT_OK=qw(split_header_words _split_header_words join_header_words); +use base 'Exporter'; +our @EXPORT_OK=qw(split_header_words _split_header_words join_header_words); sub split_header_words { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/lib/HTTP/Headers.pm new/HTTP-Message-6.08/lib/HTTP/Headers.pm --- old/HTTP-Message-6.06/lib/HTTP/Headers.pm 2012-10-20 11:11:21.000000000 +0200 +++ new/HTTP-Message-6.08/lib/HTTP/Headers.pm 2015-07-09 22:29:06.000000000 +0200 @@ -1,14 +1,15 @@ package HTTP::Headers; use strict; +use warnings; + use Carp (); -use vars qw($VERSION $TRANSLATE_UNDERSCORE); -$VERSION = "6.05"; +our $VERSION = "6.08"; # The $TRANSLATE_UNDERSCORE variable controls whether '_' can be used # as a replacement for '-' in header field names. -$TRANSLATE_UNDERSCORE = 1 unless defined $TRANSLATE_UNDERSCORE; +our $TRANSLATE_UNDERSCORE = 1 unless defined $TRANSLATE_UNDERSCORE; # "Good Practice" order of HTTP message headers: # - General-Headers @@ -238,6 +239,18 @@ } } +sub flatten { + my($self)=@_; + + ( + map { + my $k = $_; + map { + ( $k => $_ ) + } $self->header($_); + } $self->header_field_names + ); +} sub as_string { @@ -521,7 +534,7 @@ A multi-valued field will be returned as separate values in list context and will be concatenated with ", " as separator in scalar -context. The HTTP spec (RFC 2616) promise that joining multiple +context. The HTTP spec (RFC 2616) promises that joining multiple values in this way will not change the semantic of a header field, but in practice there are cases like old-style Netscape cookies (see L<HTTP::Cookies>) where "," is used as part of the syntax of a single @@ -612,6 +625,10 @@ be broken by raising an exception (C<die>), but the caller of scan() would have to trap the exception itself. +=item $h->flatten() + +Returns the list of pairs of keys and values. + =item $h->as_string =item $h->as_string( $eol ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/lib/HTTP/Message.pm new/HTTP-Message-6.08/lib/HTTP/Message.pm --- old/HTTP-Message-6.06/lib/HTTP/Message.pm 2012-10-21 00:05:34.000000000 +0200 +++ new/HTTP-Message-6.08/lib/HTTP/Message.pm 2015-07-09 22:29:06.000000000 +0200 @@ -1,8 +1,9 @@ package HTTP::Message; use strict; -use vars qw($VERSION $AUTOLOAD); -$VERSION = "6.06"; +use warnings; + +our $VERSION = "6.08"; require HTTP::Headers; require Carp; @@ -292,7 +293,7 @@ $h =~ s/\s+$//; for my $ce (reverse split(/\s*,\s*/, lc($h))) { next unless $ce; - next if $ce eq "identity"; + next if $ce eq "identity" || $ce eq "none"; if ($ce eq "gzip" || $ce eq "x-gzip") { require IO::Uncompress::Gunzip; my $output; @@ -359,7 +360,7 @@ "ISO-8859-1" ); if ($charset eq "none") { - # leave it asis + # leave it as is } elsif ($charset eq "us-ascii" || $charset eq "iso-8859-1") { if ($$content_ref =~ /[^\x00-\x7F]/ && defined &utf8::upgrade) { @@ -574,6 +575,10 @@ return $dump; } +# allow subclasses to override what will handle individual parts +sub _part_class { + return __PACKAGE__; +} sub parts { my $self = shift; @@ -602,8 +607,10 @@ sub add_part { my $self = shift; if (($self->content_type || "") !~ m,^multipart/,) { - my $p = HTTP::Message->new($self->remove_content_headers, - $self->content("")); + my $p = $self->_part_class->new( + $self->remove_content_headers, + $self->content(""), + ); $self->content_type("multipart/mixed"); $self->{_parts} = []; if ($p->headers->header_field_names || $p->content ne "") { @@ -633,7 +640,8 @@ } -# delegate all other method calls the the headers object. +# delegate all other method calls to the headers object. +our $AUTOLOAD; sub AUTOLOAD { my $method = substr($AUTOLOAD, rindex($AUTOLOAD, '::')+2); @@ -673,7 +681,7 @@ my $str = $self->content; $str =~ s/\r?\n--\Q$b\E--.*//s; if ($str =~ s/(^|.*?\r?\n)--\Q$b\E\r?\n//s) { - $self->{_parts} = [map HTTP::Message->parse($_), + $self->{_parts} = [map $self->_part_class->parse($_), split(/\r?\n--\Q$b\E\r?\n/, $str)] } } @@ -687,7 +695,7 @@ $self->{_parts} = [$class->parse($content)]; } elsif ($ct =~ m,^message/,) { - $self->{_parts} = [ HTTP::Message->parse($self->content) ]; + $self->{_parts} = [ $self->_part_class->parse($self->content) ]; } $self->{_parts} ||= []; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/lib/HTTP/Request/Common.pm new/HTTP-Message-6.08/lib/HTTP/Request/Common.pm --- old/HTTP-Message-6.06/lib/HTTP/Request/Common.pm 2012-09-30 23:17:21.000000000 +0200 +++ new/HTTP-Message-6.08/lib/HTTP/Request/Common.pm 2015-07-10 05:01:23.000000000 +0200 @@ -1,31 +1,38 @@ package HTTP::Request::Common; use strict; -use vars qw(@EXPORT @EXPORT_OK $VERSION $DYNAMIC_FILE_UPLOAD); +use warnings; -$DYNAMIC_FILE_UPLOAD ||= 0; # make it defined (don't know why) +our $DYNAMIC_FILE_UPLOAD ||= 0; # make it defined (don't know why) -require Exporter; -*import = \&Exporter::import; -@EXPORT =qw(GET HEAD PUT POST); -@EXPORT_OK = qw($DYNAMIC_FILE_UPLOAD DELETE); +use Exporter 5.57 'import'; + +our @EXPORT =qw(GET HEAD PUT POST); +our @EXPORT_OK = qw($DYNAMIC_FILE_UPLOAD DELETE); require HTTP::Request; use Carp(); -$VERSION = "6.04"; +our $VERSION = "6.08"; my $CRLF = "\015\012"; # "\r\n" is not portable sub GET { _simple_req('GET', @_); } sub HEAD { _simple_req('HEAD', @_); } -sub PUT { _simple_req('PUT' , @_); } sub DELETE { _simple_req('DELETE', @_); } -sub POST +for my $type (qw(PUT POST)) { + no strict 'refs'; + *{ __PACKAGE__ . "::" . $type } = sub { + return request_type_with_data($type, @_); + }; +} + +sub request_type_with_data { - my $url = shift; - my $req = HTTP::Request->new(POST => $url); + my $type = shift; + my $url = shift; + my $req = HTTP::Request->new($type => $url); my $content; $content = shift if @_ and ref $_[0]; my($k, $v); @@ -128,10 +135,10 @@ my @data = ref($data) eq "HASH" ? %$data : @$data; # copy my $fhparts; my @parts; - my($k,$v); - while (($k,$v) = splice(@data, 0, 2)) { + while (my ($k,$v) = splice(@data, 0, 2)) { if (!ref($v)) { $k =~ s/([\\\"])/\\$1/g; # escape quotes and backslashes + no warnings 'uninitialized'; push(@parts, qq(Content-Disposition: form-data; name="$k"$CRLF$CRLF$v)); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/lib/HTTP/Request.pm new/HTTP-Message-6.08/lib/HTTP/Request.pm --- old/HTTP-Message-6.06/lib/HTTP/Request.pm 2012-02-15 20:28:25.000000000 +0100 +++ new/HTTP-Message-6.08/lib/HTTP/Request.pm 2015-07-09 22:29:06.000000000 +0200 @@ -1,12 +1,11 @@ package HTTP::Request; -require HTTP::Message; -@ISA = qw(HTTP::Message); -$VERSION = "6.00"; - use strict; +use warnings; +use base 'HTTP::Message'; +our $VERSION = "6.08"; sub new { @@ -192,7 +191,7 @@ This is used to get/set the uri attribute. The $val can be a reference to a URI object or a plain string. If a string is given, -then it should be parseable as an absolute URI. +then it should be parsable as an absolute URI. =item $r->header( $field ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/lib/HTTP/Response.pm new/HTTP-Message-6.08/lib/HTTP/Response.pm --- old/HTTP-Message-6.06/lib/HTTP/Response.pm 2012-09-30 23:17:39.000000000 +0200 +++ new/HTTP-Message-6.08/lib/HTTP/Response.pm 2015-07-09 22:29:06.000000000 +0200 @@ -1,12 +1,13 @@ package HTTP::Response; -require HTTP::Message; -@ISA = qw(HTTP::Message); -$VERSION = "6.04"; - use strict; -use HTTP::Status (); +use warnings; +use base 'HTTP::Message'; + +our $VERSION = "6.08"; + +use HTTP::Status (); sub new @@ -212,6 +213,8 @@ sub is_success { HTTP::Status::is_success (shift->{'_rc'}); } sub is_redirect { HTTP::Status::is_redirect (shift->{'_rc'}); } sub is_error { HTTP::Status::is_error (shift->{'_rc'}); } +sub is_client_error { HTTP::Status::is_client_error (shift->{'_rc'}); } +sub is_server_error { HTTP::Status::is_server_error (shift->{'_rc'}); } sub error_as_HTML @@ -429,7 +432,7 @@ =item $r->request( $request ) This is used to get/set the request attribute. The request attribute -is a reference to the the request that caused this response. It does +is a reference to the request that caused this response. It does not have to be the same request passed to the $ua->request() method, because there might have been redirects and authorization retries in between. @@ -539,6 +542,10 @@ =item $r->is_error +=item $r->is_client_error + +=item $r->is_server_error + These methods indicate if the response was informational, successful, a redirection, or an error. See L<HTTP::Status> for the meaning of these. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/lib/HTTP/Status.pm new/HTTP-Message-6.08/lib/HTTP/Status.pm --- old/HTTP-Message-6.06/lib/HTTP/Status.pm 2012-02-16 23:14:03.000000000 +0100 +++ new/HTTP-Message-6.08/lib/HTTP/Status.pm 2015-07-09 22:29:06.000000000 +0200 @@ -1,15 +1,15 @@ package HTTP::Status; use strict; +use warnings; + require 5.002; # because we use prototypes -use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION); +use base 'Exporter'; +our @EXPORT = qw(is_info is_success is_redirect is_error status_message); +our @EXPORT_OK = qw(is_client_error is_server_error); -require Exporter; -@ISA = qw(Exporter); -@EXPORT = qw(is_info is_success is_redirect is_error status_message); -@EXPORT_OK = qw(is_client_error is_server_error); -$VERSION = "6.03"; +our $VERSION = "6.08"; # Note also addition of mnemonics to @EXPORT below @@ -36,6 +36,7 @@ 304 => 'Not Modified', 305 => 'Use Proxy', 307 => 'Temporary Redirect', + 308 => 'Permanent Redirect', # RFC 7238 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', @@ -95,7 +96,7 @@ *RC_MOVED_TEMPORARILY = \&RC_FOUND; # 302 was renamed in the standard push(@EXPORT, "RC_MOVED_TEMPORARILY"); -%EXPORT_TAGS = ( +our %EXPORT_TAGS = ( constants => [grep /^HTTP_/, @EXPORT_OK], is => [grep /^is_/, @EXPORT, @EXPORT_OK], ); @@ -165,6 +166,7 @@ HTTP_NOT_MODIFIED (304) HTTP_USE_PROXY (305) HTTP_TEMPORARY_REDIRECT (307) + HTTP_PERMANENT_REDIRECT (308) HTTP_BAD_REQUEST (400) HTTP_UNAUTHORIZED (401) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/t/common-req.t new/HTTP-Message-6.08/t/common-req.t --- old/HTTP-Message-6.06/t/common-req.t 2012-05-27 12:47:31.000000000 +0200 +++ new/HTTP-Message-6.08/t/common-req.t 2015-07-09 02:23:53.000000000 +0200 @@ -1,11 +1,12 @@ -#perl -w +use strict; +use warnings; use Test; -plan tests => 57; +plan tests => 58; use HTTP::Request::Common; -$r = GET 'http://www.sn.no/'; +my $r = GET 'http://www.sn.no/'; print $r->as_string; ok($r->method, "GET"); @@ -35,6 +36,10 @@ ok($r->content, "foo"); ok($r->content_length, 3); +$r = PUT "http://www.sn.no", + { foo => "bar" }; +ok($r->content, "foo=bar"); + #--- Test POST requests --- $r = POST "http://www.sn.no", [foo => 'bar;baz', @@ -81,7 +86,7 @@ # # POST for File upload # -$file = "test-$$"; +my $file = "test-$$"; open(FILE, ">$file") or die "Can't create $file: $!"; print FILE "foo\nbar\nbaz\n"; close(FILE); @@ -101,12 +106,12 @@ ok($r->method, "POST"); ok($r->uri->path, "/survey.cgi"); ok($r->content_type, "multipart/form-data"); -ok($r->header(Content_type) =~ /boundary="?([^"]+)"?/); -$boundary = $1; +ok($r->header('Content_type') =~ /boundary="?([^"]+)"?/); +my $boundary = $1; -$c = $r->content; +my $c = $r->content; $c =~ s/\r//g; -@c = split(/--\Q$boundary/, $c); +my @c = split(/--\Q$boundary/, $c); print "$c[5]\n"; ok(@c == 7 and $c[6] =~ /^--\n/); # 5 parts + header & trailer @@ -171,13 +176,13 @@ ok($r->method, "POST"); ok($r->uri->path, "/survey.cgi"); ok($r->content_type, "multipart/form-data"); -ok($r->header(Content_type) =~ /boundary="?([^"]+)"?/); +ok($r->header('Content_type') =~ /boundary="?([^"]+)"?/); $boundary = $1; ok(ref($r->content), "CODE"); ok(length($boundary) > 10); -$code = $r->content; +my $code = $r->content; my $chunk; my @chunks; while (defined($chunk = &$code) && length $chunk) { @@ -226,4 +231,4 @@ 'Content-Type' => 'application/octet-steam', 'Content' => 'foobarbaz', 'Content-Length' => 12; # a slight lie -ok($r->header('Content-Length'), 12); +ok($r->header('Content-Length'), 9); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/t/headers-auth.t new/HTTP-Message-6.08/t/headers-auth.t --- old/HTTP-Message-6.06/t/headers-auth.t 2012-02-15 20:28:25.000000000 +0100 +++ new/HTTP-Message-6.08/t/headers-auth.t 2015-07-09 02:23:53.000000000 +0200 @@ -1,6 +1,6 @@ -#!perl -w - use strict; +use warnings; + use Test; plan tests => 6; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/t/headers-etag.t new/HTTP-Message-6.08/t/headers-etag.t --- old/HTTP-Message-6.06/t/headers-etag.t 2012-02-15 20:28:25.000000000 +0100 +++ new/HTTP-Message-6.08/t/headers-etag.t 2015-07-09 02:23:53.000000000 +0200 @@ -1,6 +1,6 @@ -#!perl -w - use strict; +use warnings; + use Test; plan tests => 4; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/t/headers-util.t new/HTTP-Message-6.08/t/headers-util.t --- old/HTTP-Message-6.06/t/headers-util.t 2012-02-15 20:28:25.000000000 +0100 +++ new/HTTP-Message-6.08/t/headers-util.t 2015-07-09 02:23:53.000000000 +0200 @@ -1,6 +1,6 @@ -#!perl -w - use strict; +use warnings; + use Test; use HTTP::Headers::Util qw(split_header_words join_header_words); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/t/headers.t new/HTTP-Message-6.08/t/headers.t --- old/HTTP-Message-6.06/t/headers.t 2012-10-20 23:26:35.000000000 +0200 +++ new/HTTP-Message-6.08/t/headers.t 2015-07-09 02:23:53.000000000 +0200 @@ -1,9 +1,9 @@ -#!perl -w - use strict; +use warnings; + use Test qw(plan ok); -plan tests => 166; +plan tests => 175; my($h, $h2); sub j { join("|", @_) } @@ -457,3 +457,19 @@ if_modified_since => "Sat, 29 Oct 1994 19:43:31 GMT; length=34343" ); ok(gmtime($h->if_modified_since), "Sat Oct 29 19:43:31 1994"); + +$h = HTTP::Headers->new(); +$h->content_type('text/plain'); +$h->content_length(4); +$h->push_header('x-foo' => 'bar'); +$h->push_header('x-foo' => 'baz'); +ok(0+$h->flatten eq 8); +ok([$h->flatten]->[0] eq 'Content-Length'); +ok([$h->flatten]->[1] eq 4); +ok([$h->flatten]->[2] eq 'Content-Type'); +ok([$h->flatten]->[3] eq 'text/plain'); +ok([$h->flatten]->[4] eq 'X-Foo'); +ok([$h->flatten]->[5] eq 'bar'); +ok([$h->flatten]->[6] eq 'X-Foo'); +ok([$h->flatten]->[7] eq 'baz'); + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/t/http-config.t new/HTTP-Message-6.08/t/http-config.t --- old/HTTP-Message-6.06/t/http-config.t 2012-02-15 20:28:25.000000000 +0100 +++ new/HTTP-Message-6.08/t/http-config.t 2015-07-09 02:23:53.000000000 +0200 @@ -1,6 +1,6 @@ -#!perl -w - use strict; +use warnings; + use Test; plan tests => 14; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/t/message-charset.t new/HTTP-Message-6.08/t/message-charset.t --- old/HTTP-Message-6.06/t/message-charset.t 2012-04-21 08:24:04.000000000 +0200 +++ new/HTTP-Message-6.08/t/message-charset.t 2015-07-09 02:23:53.000000000 +0200 @@ -1,6 +1,5 @@ -#!perl -w - use strict; +use warnings; use Test; plan tests => 43; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/t/message-old.t new/HTTP-Message-6.08/t/message-old.t --- old/HTTP-Message-6.06/t/message-old.t 2012-02-15 20:28:25.000000000 +0100 +++ new/HTTP-Message-6.08/t/message-old.t 2015-07-09 02:23:53.000000000 +0200 @@ -1,10 +1,10 @@ -#!perl -w - # This is the old message.t test. It is not maintained any more, # but kept around in case it happens to catch any mistakes. Please # add new tests to message.t instead. use strict; +use warnings; + use Test qw(plan ok); plan tests => 20; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/t/message-parts.t new/HTTP-Message-6.08/t/message-parts.t --- old/HTTP-Message-6.06/t/message-parts.t 2012-10-20 23:54:38.000000000 +0200 +++ new/HTTP-Message-6.08/t/message-parts.t 2015-07-09 02:23:53.000000000 +0200 @@ -1,6 +1,6 @@ -#!/usr/bin/perl -w - use strict; +use warnings; + use Test qw(plan ok); plan tests => 47; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/t/message.t new/HTTP-Message-6.08/t/message.t --- old/HTTP-Message-6.06/t/message.t 2012-10-20 10:54:44.000000000 +0200 +++ new/HTTP-Message-6.08/t/message.t 2015-07-09 02:23:53.000000000 +0200 @@ -1,6 +1,6 @@ -#!perl -w - use strict; +use warnings; + use Test qw(plan ok skip); plan tests => 129; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/t/request.t new/HTTP-Message-6.08/t/request.t --- old/HTTP-Message-6.06/t/request.t 2012-02-15 20:28:25.000000000 +0100 +++ new/HTTP-Message-6.08/t/request.t 2015-07-09 02:23:53.000000000 +0200 @@ -2,6 +2,7 @@ # message.t test suite. use strict; +use warnings; use Test; plan tests => 11; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/t/request_type_with_data.t new/HTTP-Message-6.08/t/request_type_with_data.t --- old/HTTP-Message-6.06/t/request_type_with_data.t 1970-01-01 01:00:00.000000000 +0100 +++ new/HTTP-Message-6.08/t/request_type_with_data.t 2015-07-10 05:01:39.000000000 +0200 @@ -0,0 +1,22 @@ +use strict; +use warnings; + +use Test::More 0.88; +use HTTP::Request::Common; + +# I'd use Test::Warnings here, but let's respect our downstream consumers and +# not force that prereq on them +my @warnings; +$SIG{__WARN__} = sub { push @warnings, grep { length } @_ }; + +my $request = HTTP::Request::Common::request_type_with_data( + 'POST' => 'https://localhost/', + 'content_type' => 'multipart/form-data; boundary=----1234', + 'content' => [ a => 1, b => undef ], +); + +isa_ok($request, 'HTTP::Request'); +is(scalar(@warnings), 0, 'no warnings') + or diag('got warnings: ', explain(\@warnings)); + +done_testing; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/t/response.t new/HTTP-Message-6.08/t/response.t --- old/HTTP-Message-6.06/t/response.t 2012-02-15 20:28:25.000000000 +0100 +++ new/HTTP-Message-6.08/t/response.t 2015-07-09 02:23:53.000000000 +0200 @@ -1,9 +1,9 @@ -#!perl -w - # Test extra HTTP::Response methods. Basic operation is tested in the # message.t test suite. use strict; +use warnings; + use Test; plan tests => 23; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/t/status-old.t new/HTTP-Message-6.08/t/status-old.t --- old/HTTP-Message-6.06/t/status-old.t 2012-02-15 20:28:25.000000000 +0100 +++ new/HTTP-Message-6.08/t/status-old.t 2015-07-09 02:23:53.000000000 +0200 @@ -1,4 +1,5 @@ -#!perl -w +use strict; +use warnings; use Test; plan tests => 8; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Message-6.06/t/status.t new/HTTP-Message-6.08/t/status.t --- old/HTTP-Message-6.06/t/status.t 2012-02-16 23:14:03.000000000 +0100 +++ new/HTTP-Message-6.08/t/status.t 2015-07-09 02:23:53.000000000 +0200 @@ -1,7 +1,8 @@ -#!perl -w +use strict; +use warnings; use Test; -plan tests => 9; +plan tests => 10; use HTTP::Status qw(:constants :is status_message); @@ -12,6 +13,7 @@ ok(is_error(HTTP_BAD_REQUEST)); ok(is_client_error(HTTP_I_AM_A_TEAPOT)); ok(is_redirect(HTTP_MOVED_PERMANENTLY)); +ok(is_redirect(HTTP_PERMANENT_REDIRECT)); ok(!is_success(HTTP_NOT_FOUND)); ++++++ cpanspec.yml ++++++ --- #description_paragraphs: 3 #no_testing: broken upstream #sources: # - source1 # - source2 #patches: # foo.patch: -p1 # bar.patch: #preamble: |- # BuildRequires: gcc-c++ #post_prep: |- # hunspell=`pkg-config --libs hunspell | sed -e 's,-l,,; s, *,,g'` # sed -i -e "s,hunspell-X,$hunspell," t/00-prereq.t Makefile.PL #post_install: |- # sed on %{name}.files #license: SUSE-NonFree #skip_noarch: 1 #custom_build: |- #./Build build flags=%{?_smp_mflags} --myflag #custom_test: |- #startserver && make test #ignore_requires: Bizarre::Module
