# Changelog ## 0.5.0.pre [Full Changelog](http://github.com/typhoeus/typhoeus/compare/v0.4.2...master) Major Changes: * Ethon integration * Params are url params and a body is always a body for every request type * Request parameter and body are properly encoded (only POST multiform body is not) * No more header sanitizing Before: `:headers => { 'user_agent' => 'Custom' }` was modified to `:headers => { 'User-Agent' => 'Custom' }` * The options you can set might have a slightly other names, as Ethon sticks to libcurl names. See [Easy.new](http://rubydoc.info/github/typhoeus/ethon/Ethon/Easy#initialize-instance_method) for a description. * The following classes were deleted because they do not seemed to be uesed at all. If that turns out to be wrong, they will be restored: `Typhoeus::Filter`, `Typhoeus::Remote`, `Typhoeus::RemoteMethod`, `Typhoeus::RemoteProxyObject` * `Typhoeus::Easy` and `Typhoeus::Multi` are now `Ethon::Easy` and `Ethon::Multi` * Request shortcuts: `Typhoeus.get("www.google.de")` * Global configuration: ```ruby Typhoeus.configure do |config| config.verbose = true config.memoize = true end ``` * No more Response#headers_hash, instead response#header returning the last header and response#redirections returning the responses with headers generated through redirections * Instead of defining the same callbacks on every request, you can define global callbacks: ```ruby Typhoeus.on_complete { p "yay" } ``` * The stubbing interface changed slightly. You now have the same syntax as for requests: ```ruby Typhoeus.stub(url, options).and_return(response) ``` Enhancements: * Documentation ( [Alex P](https://github.com/ifesdjeen), [\#188](https://github.com/typhoeus/typhoeus/issues/188) ) * Request#on\_complete can hold multiple blocks. * Request#eql? recognizes when header/params/body has a different order, but still same keys and values ( [Alex P](https://github.com/ifesdjeen), [\#194](https://github.com/typhoeus/typhoeus/issues/194) ) Bug Fixes: * Zero bytes in strings are escaped for libcurl * Add support for socks5 hostname proxy type ( [eweathers](https://github.com/eweathers), [\#183](https://github.com/typhoeus/typhoeus/issues/183) ) * Post body is encoded ( [Rohan Deshpande](https://github.com/rdeshpande), [\#143](https://github.com/typhoeus/typhoeus/issues/143) ) * Set default user agent ( [Steven Shingler](https://github.com/sshingler), [\#176](https://github.com/typhoeus/typhoeus/issues/176) ) ## 0.4.2 * A header hotfix ## 0.4.1 * Fix verifypeer and verifyhost options * Fix header sending ## 0.4.0 * Make a GET even when a body is given * Deprecated User Agent setter removed * Allow cache key basis overwrite (John Crepezzi, #147) * FFI integration (Daniel Cavanagh, #151) * Refactor upload code (Marnen Laibow-Koser, #152) * Fix travis-ci build (Ezekiel Templin, #160) ## 0.3.3 * Make sure to call the Easy::failure callback on all non-success http response codes, even invalid ones. [balexis] * Use bytesize instead of length to determine Content-Length [dlamacchia] * Added SSL version option to Easy/Request [michelbarbosa/dbalatero] ## 0.3.2 * Fix array params to be consistent with HTTP spec [gridaphobe] * traversal\_to\_params\_hash should use the escape option [itsmeduncan] * Fix > 1024 open file descriptors [mschulkind] * Fixed a bug with internally queued requests being dropped [mschulkind] * Use gemspec in bundler to avoid duplication [mschulkind] * Run internally queued requests in FIFO order [mschulkind] * Moved Typhoeus::VERSION to a separate file, to fix rake build\_native [mschulkind] * Fixed problems related to put requests with empty bodies [skaes, GH-84] * Added CURLOPT\_INTERFACE option via Request#interface=. [spiegela] * Added Tempfile support to Form#process! [richievos] * Hydra won't forget to accept gzip/deflate encoding [codesnik] * Accept and convert strings to integers in Typhoeus::Request#initialize for timeout/cache\_timeout/connect\_timeout values when using ruby 1.9.x. [djnawara] * Added interface for registering stub finders [myronmarston] * Fixed header stubbing [myronmarston] * Added PKCS12 support [jodell] * Make a request with handlers marshallable [bernerdschaefer] * Upgraded to RSpec 2 [bernerdschaefer] * Fix HTTP status edge-case [balexis] * Expose primary\_ip to easy object [balexis] ## 0.2.4 * Fix form POSTs to only use multipart for file uploads, otherwise use application/x-www-form-urlencoded [dbalatero] ## 0.2.3 * Code duplication in Typhoeus::Form led to nested URL param errors on POST only. Fixed [dbalatero] ## 0.2.2 * Fixed a problem with nested URL params encoding incorrectly [dbalatero] ## 0.2.1 * Added extended proxy support [Zapotek, GH-46] * eliminated compile time warnings by using proper type declarations [skaes, GH-54] * fixed broken calls to rb\_raise [skaes, GH-54] * prevent leaking of curl easy handles when exceptions are raised (either from typhoeus itself or user callbacks) [skaes, GH-54] * fixed Easy#timed\_out? using curl return codes [skaes, GH-54] * provide curl return codes and corresponding curl error messages on classes Easy and Request [skaes, GH-54] * allow VCR to whitelist hosts in Typhoeus stubbing/mocking [myronmarston, GH-57] * added timed\_out? documentation, method to Response [dbalatero, GH-34] * added abort to Hydra to prematurely stop a hydra.run [Zapotek] * added file upload support for POST requests [jtarchie, GH-59] ## 0.2.0 * Fix warning in Request#headers from attr\_accessor * Params with array values were not parsing into the format that rack expects [GH-39, smartocci] * Removed Rack as a dependency [GH-45] * Added integration hooks for VCR! ## 0.1.31 * Fixed bug in setting compression encoding [morhekil] * Exposed authentication control methods through Request interface [morhekil] ## 0.1.30 * Exposed CURLOPT\_CONNECTTIMEOUT\_MS to Requests [balexis] ## 0.1.29 * Fixed a memory corruption with using CURLOPT\_POSTFIELDS [gravis, 32531d0821aecc4] ## 0.1.28 * Added SSL cert options for Typhoeus::Easy [GH-25, gravis] * Ported SSL cert options to Typhoeus::Request interface [gravis] * Added support for any HTTP method (purge for Varnish) [ryana] ## 0.1.27 * Added rack as dependency, added dev dependencies to Rakefile [GH-21]