# Changelog All notable [changes since 0.22 are documented in GitHub Releases](https://github.com/jnunemaker/httparty/releases). ## 0.21.0 - [escape filename in the multipart/form-data Content-Disposition header](https://github.com/jnunemaker/httparty/commit/cdb45a678c43e44570b4e73f84b1abeb5ec22b8e) - [Fix request marshaling](https://github.com/jnunemaker/httparty/pull/767) - [Replace `mime-types` with `mini_mime`](https://github.com/jnunemaker/httparty/pull/769) ## 0.20.0 Breaking changes - Require Ruby >= 2.3.0 Fixes - [`Marshal.dump` fails on response objects when request option `:logger` is set or `:parser` is a proc](https://github.com/jnunemaker/httparty/pull/714) - [Switch `:pem` option to to `OpenSSL::PKey.read` to support other algorithms](https://github.com/jnunemaker/httparty/pull/720) ## 0.19.1 - [Remove use of unary + method for creating non-frozen string to increase compatibility with older versions of ruby](https://github.com/jnunemaker/httparty/commit/4416141d37fd71bdba4f37589ec265f55aa446ce) ## 0.19.0 - [Multipart/Form-Data: rewind files after read](https://github.com/jnunemaker/httparty/pull/709) - [add frozen_string_literal pragma to all files](https://github.com/jnunemaker/httparty/pull/711) - [Better handling of Accept-Encoding / Content-Encoding decompression (fixes #562)](https://github.com/jnunemaker/httparty/pull/729) ## 0.18.1 - [Rename cop Lint/HandleExceptions to Lint/SuppressedException](https://github.com/jnunemaker/httparty/pull/699). - [Encode keys in query params](https://github.com/jnunemaker/httparty/pull/698). - [Fixed SSL doc example](https://github.com/jnunemaker/httparty/pull/692). - [Add a build status badge](https://github.com/jnunemaker/httparty/pull/701). ## 0.18.0 - [Support gzip/deflate transfer encoding when explicit headers are set](https://github.com/jnunemaker/httparty/pull/678). - [Support edge case cookie format with a blank attribute](https://github.com/jnunemaker/httparty/pull/685). ## 0.17.3 0.17.2 is broken https://github.com/jnunemaker/httparty/issues/681 ## 0.17.2 - [Add Response#nil? deprecetion warning](https://github.com/jnunemaker/httparty/pull/680) ## 0.17.1 - [Pass options to dynamic block headers](https://github.com/jnunemaker/httparty/pull/661) - [Normalize urls with URI adapter to allow International Domain Names support](https://github.com/jnunemaker/httparty/pull/668) - [Add max_retries support](https://github.com/jnunemaker/httparty/pull/660) - [Minize gem size by removing test files](https://github.com/jnunemaker/httparty/pull/658) ## 0.17.0 - [Fix encoding of streamed chunk](https://github.com/jnunemaker/httparty/pull/644) - [Avoid modifying frozen strings](https://github.com/jnunemaker/httparty/pull/649) - [Expose .connection on fragment block param](https://github.com/jnunemaker/httparty/pull/648) - [Add support for `Net::HTTP#write_timeout` method (Ruby 2.6.0)](https://github.com/jnunemaker/httparty/pull/647) ## 0.16.4 - [Add support for Ruby 2.6](https://github.com/jnunemaker/httparty/pull/636) - [Fix a few multipart issues](https://github.com/jnunemaker/httparty/pull/626) - [Improve a memory usage for https requests](https://github.com/jnunemaker/httparty/pull/625) - [Add response code to streamed body](https://github.com/jnunemaker/httparty/pull/588) ## 0.16.3 - [Add Logstash-compatible formatter](https://github.com/jnunemaker/httparty/pull/612) - [Add support for headers specified with symbols](https://github.com/jnunemaker/httparty/pull/622) - [Fix response object marshalling](https://github.com/jnunemaker/httparty/pull/618) - [Add ability to send multipart, without passing file](https://github.com/jnunemaker/httparty/pull/615) - [Fix detection of content_type for multipart payload](https://github.com/jnunemaker/httparty/pull/616) - [Process dynamic headers before making actual request](https://github.com/jnunemaker/httparty/pull/606) - [Fix multipart uploads with ActionDispatch::Http::UploadedFile TempFile by using original_filename](https://github.com/jnunemaker/httparty/pull/598) - [Added support for lock and unlock http requests](https://github.com/jnunemaker/httparty/pull/596) ## 0.16.2 - [Support ActionDispatch::Http::UploadedFile again](https://github.com/jnunemaker/httparty/pull/585) ## 0.16.1 - [Parse content with application/hal+json content type as JSON](https://github.com/jnunemaker/httparty/pull/573) - [Convert objects to string when concatenating in multipart stuff](https://github.com/jnunemaker/httparty/pull/575) - [Fix multipart to set its header even when other headers are provided](https://github.com/jnunemaker/httparty/pull/576) ## 0.16.0 - [Add multipart support](https://github.com/jnunemaker/httparty/pull/569) ## 0.15.7 Fixed - [Add Response#pretty_print | Restore documented behavior](https://github.com/jnunemaker/httparty/pull/570) - [Add ability to parse response from JSONAPI ](https://github.com/jnunemaker/httparty/pull/553) ## 0.15.6 Fixed - [Encoding and content type stuff](https://github.com/jnunemaker/httparty/pull/543) ## 0.15.5 Fixed - [Use non-destructive gsub](https://github.com/jnunemaker/httparty/pull/540) ## 0.15.4 Fixed - Prevent gsub errors with different encodings. - Prevent passing nil to encode_body. ## 0.15.3 Fixed - [Fix processing nil body for HEAD requests](https://github.com/jnunemaker/httparty/pull/530). - Add missing require to headers.rb (33439a8). ## 0.15.2 Fixed - Remove symlink from specs. It was reportedly still getting bundled with gem. ## 0.15.1 Fixed - Stop including test files in gem. Fixes installation issues on windows due to symlink in spec dir. ## 0.15.0 Breaking Changes - require Ruby >= 2.0.0 Fixed - [fix numerous bugs](https://github.com/jnunemaker/httparty/pull/513) - [handle utf-8 bom for json parsing](https://github.com/jnunemaker/httparty/pull/520) - [do not overwrite default headers unless specified](https://github.com/jnunemaker/httparty/pull/518) ## 0.14.0 Breaking Changes - None Added - [added status predicate methods to Response#respond_to?](https://github.com/jnunemaker/httparty/pull/482) - [support for MKCOL method](https://github.com/jnunemaker/httparty/pull/465) - one fewer dependency: [remove json gem from gemspec](https://github.com/jnunemaker/httparty/pull/464) - [optional raising exception on certain status codes](https://github.com/jnunemaker/httparty/pull/455) Fixed - [allow empty array to be used as param](https://github.com/jnunemaker/httparty/pull/477) - [stop mutating cookie hash](https://github.com/jnunemaker/httparty/pull/460) ## 0.13.7 aka "party not as hard" - remove post install emoji as it caused installation issues for some people ## 0.13.6 - avoid calling String#strip on invalid Strings - preserve request method on 307 and 308 redirects - output version with --version for command line bin - maintain head request method across redirects by default - add support for RFC2617 MD5-sess algorithm type - add party popper emoji to post install message ## 0.13.5 - allow setting a custom URI adapter ## 0.13.4 - correct redirect url for redirect paths without leading slash - remove core_extensions.rb as backwards compat for ruby 1.8 not needed - replace URI.encode with ERB::Util.url_encode - allow the response to be tapped ## 0.13.3 - minor improvement - added option to allow for streaming large files without loading them into memory (672cdae) ## 0.13.2 - minor improvement - [Set correct path on redirect to filename](https://github.com/jnunemaker/httparty/pull/337) - ensure logger works with curl format ## 0.13.1 2014-04-08 - new - [Added ability to specify a body_stream in HttpRequest](https://github.com/jnunemaker/httparty/pull/275) - [Added read_timeout and open_timeout options](https://github.com/jnunemaker/httparty/pull/278) - change - [Initialize HTTParty requests with an URI object and a String](https://github.com/jnunemaker/httparty/pull/274) - minor improvement - [Add stackexchange API example](https://github.com/jnunemaker/httparty/pull/280) ## 0.13.0 2014-02-14 - new - [Add CSV support](https://github.com/jnunemaker/httparty/pull/269) - [Allows PKCS12 client certificates](https://github.com/jnunemaker/httparty/pull/246) - bug fix - [Digest auth no longer fails when multiple headers are sent by the server](https://github.com/jnunemaker/httparty/pull/272) - [Use 'Basement.copy' when calling 'HTTParty.copy'](https://github.com/jnunemaker/httparty/pull/268) - [No longer appends ampersand when queries are embedded in paths](https://github.com/jnunemaker/httparty/pull/252) - change - [Merge - instead of overwrite - default headers with request provided headers](https://github.com/jnunemaker/httparty/pull/270) - [Modernize respond_to implementations to support second param](https://github.com/jnunemaker/httparty/pull/264) - [Sort query parameters by key before processing](https://github.com/jnunemaker/httparty/pull/245) - minor improvement - [Add HTTParty::Error base class](https://github.com/jnunemaker/httparty/pull/260) ## 0.12.0 2013-10-10 - new - [Added initial logging support](https://github.com/jnunemaker/httparty/pull/243) - [Add support for local host and port binding](https://github.com/jnunemaker/httparty/pull/238) - [content_type_charset_support](https://github.com/jnunemaker/httparty/commit/82e351f0904e8ecc856015ff2854698a2ca47fbc) - bug fix - [No longer attempt to decompress the body on HEAD requests](https://github.com/jnunemaker/httparty/commit/f2b8cc3d49e0e9363d7054b14f30c340d7b8e7f1) - [Adding java check in aliasing of multiple choices](https://github.com/jnunemaker/httparty/pull/204/commits) - change - [MIME-type files of javascript are returned as a string instead of JSON](https://github.com/jnunemaker/httparty/pull/239) - [Made SSL connections use the system certificate store by default](https://github.com/jnunemaker/httparty/pull/226) - [Do not pass proxy options to Net::HTTP connection if not specified](https://github.com/jnunemaker/httparty/pull/222) - [Replace multi_json with stdlib json](https://github.com/jnunemaker/httparty/pull/214) - [Require Ruby >= 1.9.3] - [Response returns array of returned cookie strings](https://github.com/jnunemaker/httparty/pull/218) - [Allow '=' within value of a cookie] - minor improvements - [Improve documentation of ssl_ca_file, ssl_ca_path](https://github.com/jnunemaker/httparty/pull/223) - [Fix example URLs](https://github.com/jnunemaker/httparty/pull/232) ## 0.11.0 2013-04-10 - new - [Add COPY http request handling](https://github.com/jnunemaker/httparty/pull/190) - [Ruby 2.0 tests](https://github.com/jnunemaker/httparty/pull/194) - [Ruby >= 2.0.0 support both multiple_choice? and multiple_choices?] - bug fix - [Maintain blocks passed to 'perform' in redirects](https://github.com/jnunemaker/httparty/pull/191) - [Fixed nc value being quoted, this was against spec](https://github.com/jnunemaker/httparty/pull/196) - [Request#uri no longer duplicates non-relative-path params](https://github.com/jnunemaker/httparty/pull/189) - change - [Client-side-only cookie attributes are removed: case-insensitive](https://github.com/jnunemaker/httparty/pull/188) ## 0.10.2 2013-01-26 - bug fix - [hash_conversions misnamed variable](https://github.com/jnunemaker/httparty/pull/187) ## 0.10.1 2013-01-26 - new - [Added support for MOVE requests](https://github.com/jnunemaker/httparty/pull/183) - [Bump multi xml version](https://github.com/jnunemaker/httparty/pull/181) ## 0.10.0 2013-01-10 - changes - removed yaml support because of security risk (see rails yaml issues) ## 0.9.0 2012-09-07 - new - [support for connection adapters](https://github.com/jnunemaker/httparty/pull/157) - [allow ssl_version on ruby 1.9](https://github.com/jnunemaker/httparty/pull/159) - bug fixes - [don't treat port 4430 as ssl](https://github.com/jnunemaker/httparty/commit/a296b1c97f83d7dcc6ef85720a43664c265685ac) - [deep clone default options](https://github.com/jnunemaker/httparty/commit/f74227d30f9389b4b23a888c9af49fb9b8248e1f) - a few net digest auth fixes ## 0.8.3 2012-04-21 - new - [lazy parsing of responses](https://github.com/jnunemaker/httparty/commit/9fd5259c8dab00e426082b66af44ede2c9068f45) - [add support for PATCH requests](https://github.com/jnunemaker/httparty/commit/7ab6641e37a9e31517e46f6124f38c615395d38a) - bug fixes - [subclasses no longer override superclass options](https://github.com/jnunemaker/httparty/commit/682af8fbf672e7b3009e650da776c85cdfe78d39) ## 0.8.2 2012-04-12 - new - add -r to make CLI return failure code if status >= 400 - allow blank username from CLI - bug fixes - return nil for null body - automatically deflate responses with a Content-Encoding: x-gzip header - Do not HEAD on POST request with digest authentication - add support for proxy authentication - fix posting data with CLI - require rexml/document if xml format from CLI - support for fragmented responses ## 0.8.1 2011-10-05 - bug fixes - content-encoding header should be removed when automatically inflating the body ## 0.8.0 2011-09-13 - new - switch to multi json/xml for parsing by default - bug fixes - fix redirects to relative uri's ## 0.7.8 2011-06-06 - bug fix - Make response honor respond to - net http timeout can also be a float ## 0.7.7 2011-04-16 - bug fix - Fix NoMethodError when using the NON_RAILS_QUERY_STRING_NORMALIZER with a hash whose key is a symbol and value is nil ## 0.7.5 2011-04-16 - bug fix - caused issue with latest rubygems ## 0.7.4 2011-02-13 - bug fixes - Set VERIFY_NONE when using https. Ruby 1.9.2 no longer sets this for us. gh-67 ## 0.7.3 2011-01-20 - bug fixes - Fix digest auth for unspecified quality of protection (bjoernalbers, mtrudel, dwo) ## 0.7.2 2011-01-20 - bug fixes - Fix gem dependencies ## 0.7.1 2011-01-19 - bug fixes - Fix uninitialized constant HTTParty::Response::Net in 1.9.2 (cap10morgan) - Other fixes for 1.9.2, full suite still fails (cap10morgan) ## 0.7.0 2011-01-18 - minor enhancements - Added query methods for HTTP status codes, i.e. response.success? response.created? (thanks citizenparker) - Added support for ssl_ca_file and ssl_ca_path (dlitz) - Allow custom query string normalization. gh-8 - Unlock private keys with password (freerange) - Added high level request documentation (phildarnowsky) - Added basic post example (pbuckley) - Response object has access to its corresponding request object - Added example of siginin into tripit.com - Added option to follow redirects (rkj). gh-56 - bug fixes - Fixed superclass mismatch exception while running tests (thanks dlitz http://github.com/dlitz/httparty/commit/48224f0615b32133afcff4718ad426df7a4b401b) ## 0.6.1 2010-07-07 - minor enhancements - updated to crack 0.1.8 - bug fixes - subclasses always merge into the parent's default_options and default_cookies (l4rk). - subclasses play nicely with grand parents. gh-49 ## 0.6.0 2010-06-13 - major enhancements - Digest Auth (bartiaco, sbecker, gilles, and aaronrussell) - Maintain HTTP method across redirects (bartiaco and sbecker) - HTTParty::Response#response returns the Net::HTTPResponse object - HTTParty::Response#headers returns a HTTParty::Response::Headers object which quacks like a Hash + Net::HTTPHeader. The #headers method continues to be backwards-compatible with the old Hash return value but may become deprecated in the future. - minor enhancements - Update crack requirement to version 0.1.7 You may still get a warning because Crack's version constant is out of date - Timeout option can be set for all requests using HTTParty.default_timeout (taazza) - Closed #38 "headers hash should downcase keys so canonical header name can be used" - Closed #40 "Gzip response" wherein gziped and deflated responses are automatically inflated. (carsonmcdonald) ## 0.5.2 2010-01-31 - minor enhancements - Update crack requirement to version 0.1.6 ## 0.5.1 2010-01-30 - bug fixes - Handle 304 response correctly by returning the HTTParty::Response object instead of redirecting (seth and hellvinz) - Only redirect 300 responses if the header contains a Location - Don't append empty query strings to the uri. Closes #31 - When no_follow is enabled, only raise the RedirectionTooDeep exception when a response tries redirecting. Closes #28 - major enhancements - Removed rubygems dependency. I suggest adding rubygems to RUBYOPT if this causes problems for you. $ export RUBYOPT='rubygems' - HTTParty#debug_output prints debugging information for the current request (iwarshak) - HTTParty#no_follow now available as a class-level option. Sets whether or not to follow redirects. - minor enhancements - HTTParty::VERSION now available - Update crack requirement to version 0.1.5 ## 0.5.0 2009-12-07 - bug fixes - inheritable attributes no longer mutable by subclasses (yyyc514) - namespace BasicObject within HTTParty to avoid class name collisions (eric) - major enhancements - Custom Parsers via class or proc - Deprecation warning on HTTParty::AllowedFormats moved to HTTParty::Parser::SupportedFormats - minor enhancements - Curl inspired output when using the binary in verbose mode (alexvollmer) - raise UnsupportedURIScheme when scheme is not HTTP or HTTPS (djspinmonkey) - Allow SSL for ports other than 443 when scheme is HTTPS (stefankroes) - Accept PEM certificates via HTTParty#pem (chrislo) - Support HEAD and OPTION verbs (grempe) - Verify SSL certificates when providing a PEM file (collectiveidea/danielmorrison) ## 0.4.5 2009-09-12 - bug fixes - Fixed class-level headers overwritten by cookie management code. Closes #19 - Fixed "superclass mismatch for class BlankSlate" error. Closes #20 - Fixed reading files as post data from the command line (vesan) - minor enhancements - Timeout option added; will raise a Timeout::Error after the timeout has elapsed (attack). Closes #17 HTTParty.get "http://github.com", timeout: 1 - Building gem with Jeweler ## 0.4.4 2009-07-19 - 2 minor update - :query no longer sets form data. Use body and set content type to application/x-www-form-urlencoded if you need it. :query was wrong for that. - Fixed a bug in the cookies class method that caused cookies to be forgotten after the first request. - Also, some general cleanup of tests and such. ## 0.4.3 2009-04-23 - 1 minor update - added message to the response object ## 0.4.2 2009-03-30 - 2 minor changes - response code now returns an integer instead of a string (jqr) - rubyforge project setup for crack so i'm now depending on that instead of jnunemaker-crack ## 0.4.1 2009-03-29 - 1 minor fix - gem 'jnunemaker-crack' instead of gem 'crack' ## 0.4.0 2009-03-29 - 1 minor change - Switched xml and json parsing to crack (same code as before just moved to gem for easier reuse in other projects) ## 0.3.1 2009-02-10 - 1 minor fix, 1 minor enhancement - Fixed unescaping umlauts (siebertm) - Added yaml response parsing (Miha Filej) ## 0.3.0 2009-01-31 - 1 major enhancement, 1 bug fix - JSON gem no longer a requirement. It was conflicting with rails json stuff so I just stole ActiveSupport's json decoding and bundled it with HTTParty. - Fixed bug where query strings were being duplicated on redirects - Added a bunch of specs and moved some code around. ## 0.2.10 2009-01-29 - 1 minor enhancement - Made encoding on query parameters treat everything except URI::PATTERN::UNRESERVED as UNSAFE to force encoding of '+' character (Julian Russell) ## 0.2.9 2009-01-29 - 3 minor enhancements - Added a 'headers' accessor to the response with a hash of any HTTP headers. (Don Peterson) - Add support for a ":cookies" option to be used at the class level, or as an option on any individual call. It should be passed a hash, which will be converted to the proper format and added to the request headers when the call is made. (Don Peterson) - Refactored several specs and added a full suite of cucumber features (Don Peterson) ## 0.2.8 2009-01-28 - 1 major fix - fixed major bug with response where it wouldn't iterate or really work at all with parsed responses ## 0.2.7 2009-01-28 - 2 minor fixes, 2 minor enhancements, 2 major enhancements - fixed undefined method add_node for nil class error that occasionally happened (juliocesar) - Handle nil or unexpected values better when typecasting. (Brian Landau) - More robust handling of mime types (Alex Vollmer) - Fixed support for specifying headers and added support for basic auth to CLI. (Alex Vollmer) - Added first class response object that includes original body and status code (Alex Vollmer) - Now parsing all response types as some non-200 responses provide important information, this means no more exception raising (Alex Vollmer) ## 0.2.6 2009-01-05 - 1 minor bug fix - added explicit require of time as Time#parse failed outside of rails (willcodeforfoo) ## 0.2.5 2009-01-05 - 1 major enhancement - Add command line interface to HTTParty (Alex Vollmer) ## 0.2.4 2008-12-23 - 1 bug fix - Fixed that mimetype detection was failing if no mimetype was returned from service (skippy) ## 0.2.3 2008-12-23 - 1 bug fix - Fixed typecasting class variable naming issue ## 0.2.2 2008-12-08 - 1 bug fix - Added the missing core extension hash method to_xml_attributes ## 0.2.1 2008-12-08 - 1 bug fix - Fixed that HTTParty was borking ActiveSupport and as such Rails (thanks to Rob Sanheim) ## 0.2.0 2008-12-07 - 1 major enhancement - Removed ActiveSupport as a dependency. Now requires json gem for json deserialization and uses an included class to do the xml parsing. ## 0.1.8 2008-11-30 - 3 major enhancements - Moved base_uri normalization into request class and out of httparty module, fixing the problem where base_uri was not always being normalized. - Stupid simple support for HTTParty.get/post/put/delete. (jqr) - Switched gem management to Echoe from newgem. ## 0.1.7 2008-11-30 - 1 major enhancement - fixed multiple class definitions overriding each others options ## 0.1.6 2008-11-26 - 1 major enhancement - now passing :query to set_form_data if post request to avoid content length errors ## 0.1.5 2008-11-14 - 2 major enhancements - Refactored send request method out into its own object. - Added :html format if you just want to do that. ## 0.1.4 2008-11-08 - 3 major enhancements: - Removed some cruft - Added ability to follow redirects automatically and turn that off (Alex Vollmer) ## 0.1.3 2008-08-22 - 3 major enhancements: - Added http_proxy key for setting proxy server and port (francxk@gmail.com) - Now raises exception when http error occurs (francxk@gmail.com) - Changed auto format detection from file extension to response content type (Jay Pignata) ## 0.1.2 2008-08-09 - 1 major enhancement: - default_params were not being appended to query string if option[:query] was blank ## 0.1.1 2008-07-30 - 2 major enhancement: - Added :basic_auth key for options when making a request - :query and :body both now work with query string or hash ## 0.1.0 2008-07-27 - 1 major enhancement: - Initial release