List of user-visible changes that have gone into each release
- Only redirect if a “location” header is actually, present, avoiding an NPE in the event it’s missing. (fixes #145)
- merged dakrone#143 for fixing some weirdness around body streams and inflation
- streams everywhere, all bodies coming out of core.clj are now streams, so {:as :stream} truly streams the response, keeping it out of memory
- remove some more reflection
- correctly close single client connection manager if {:as :stream} is used, fixes #142
- merged dakrone#138 to preserve http method for 307 redirect
- merged in parse-url parameters into follow-redirect so request map is not inconsistent
- bumped http* deps to 4.2.5
- fixed cookie compact-map not to remove falsey values, only nil ones
- merged dakrone#135 to fix discard always defaulting to true
- add current-middleware to see available middleware during a with-middleware request (for nesting)
- merged dakrone#127 to allow custom cookie policies
- allow specifying :length for mulitpart inputstream bodies to avoid chunked transfer encoding
- bumped cheshire to 5.1.1
- merged dakrone#133 to remove some reflection
- clarify :throw-exceptions in documentation
- define default-middleware for use in wrap-request, remove bad all-middleware method
- merged dakrone#130 to encode query-params
- merged dakrone#124 to handle URL-encoding invalid characters in the URI
- bump cheshire to 5.1.0
- Switch from deprecated SingleClientConnManager to BasicClientConnectionManager
- merged dakrone#126 to bump httpcore version
- bump dependencies to latest versions
- merged dakrone#122 for using data-readers when using tools.reader to parse EDN
- fix an issue with 1.3 where data-readers is not available
- merged dakrone#121 to fix auto-coercion with json
- support application/edn as an auto-coercion type
- add tools.reader as an optional dependency, edn/read will be used if available, otherwise read-string with read-eval bound to false is used. See dakrone#120
- Bump clojure to 1.5.1
- allow json coercion for exception cases based on :coerce setting, can be either :always, :exceptional or :unexceptional
- Update clojure to 1.5
- Move SingleClientConnManager shutdown into finally block
- bind read-eval to false when reading for {:as :clojure}
- bump cheshire to 5.0.2
- merged dakrone#113 to update the connection pooling code
- refactor pooled connection managers to allow specifying the :connection-manager option
- merged dakrone#112 to allow json coercion on error responses when :as :auto is used
- allow redirects when :url is not set in the request
- merged dakrone#110 to handle the case when the server-side uses deflate incorrectly
- added `with-middleware` to allow running requests with a custom middleware list
- added `all-middleware` var listing all the wrap-* middleware that clj-http knows of
- clj-http.client/request is now marked as dynamic for rebinding
- Remove wrap-cookie-store middleware, CookieStore headers are automatically added by Apache
- set the SINGLE_COOKIE_HEADER value to true to ensure Apache sends only one “Cookie:” header
- Do not add CookieStore or Cookie header if there are no cookies in the cookie jar
- merged dakrone#106 to remove query params for redirection.
- whitespace fixes; fix test that wasn’t working correctly
- bump httpcore to 4.2.3
- Fix an issue (#105) related to the “Content-Length” header being automatically added to GET requests
(bumped to 0.6.0 since Cheshire has changed major versions)
- Update Cheshire to 5.0.1
- Add type hint for getting headers from body (michaelklishin)
- add buffering for HttpEntity, with ability to turn off if needed, fixes lein issue with repeatable requests
- create a custom X509HostnameVerifier for the :insecure? option
- explicitly require httpcore instead of leaving it to a transitive dep
- update httpcomponents to 4.2.2
- implement HTML5 charset header reading from body
- bump Crouton to 0.1.1 for faster speeds
- add feature to decode body headers, merging them into response headers if they are present
- merged dakrone#98 to add optional :default-per-route to with-connection-pool
- bump cheshire to fix json encoding bug
- merged dakrone#95 to add support for setting aribtrary client params to the http client
- Merged dakrone#94 to remove some reflection
- update cheshire dep, make clojure a dev-dependency
- allow overriding the multipart part name with :part-name
- merged dakrone#91 to add support for :digest-auth
- added request timing middleware to add :request-time key for request timing
- add wrap-cookie-store to send cookie-store cookies with a request automatically
- merged dakrone#90 to standardize on lower-case headers for HTTP requests
- merged dakrone#88 to add chunked encoding
support (
:length
no longer required along with input stream:body
)
- fix clojure 1.3’s exception wrapping for some exceptions
- merged dakrone#87 to allow using http.nonProxyHosts
- mark json-encode and json-decode dynamic, so they could be rebound if desired
- update httpclient and httpmime to 4.2.1
- update commons-codec to 1.6
- update common-io to 2.4
- change body decompression to be optional, if desired
- make the :content-type and :character-encoding options part of middleware, not the core request
- document all the middleware
- merged dakrone#85 to allow low-level callback for debugging
- rewrite multipart body entity creation to use different map format, allowing :mime-type and :encoding keys in some cases
- bump cheshire to 4.0.1 and slingshot to 0.10.3
- fix an issue where cookies were encoded and should not be
- merged dakrone#80 to allow specifying the keystore type
- merged dakrone#79 to allow pluggable output coercion (multimethod)
- support custom x509 keystore/trust-stores
- fixed an issue where multiple link headers would cause an exception to be thrown
- added :debug-body that adds plaintext body information to the :debug output
- fix json encoded form params with nested maps
- fix attempted json coercion when a bad status is received
- merged dakrone#69 to add support for :oauth-token authentication
- merged dakrone#70 to save the apache Http object when :save-request? is true
- merged dakrone#68 to support additional options/delete/copy/move HTTP methods
- add support for the :patch method type
- merged dakrone#66 to add support for ‘Link’ header
- added ability to specify your own retry-handler for IOExceptions if desired
- bumped httpclient and httpmime to 4.1.3
- bump to released version of clojure (1.4)
- added documentation about ipv6 requests
- fixed dakrone#57 by have wrap-redirects redirect according to the RFC and adding the :force-redirects option to be more browser-like
- merged dakrone#61 to add support for nested param maps
- fixed an issue where urls like http://user:[email protected] didn’t work correctly for basic-auth
- added support for cookie stores
- added utility methods to retrieve cookies as a map from the cookie store
- set the default maximum number of redirects to 20
- same as 0.3.4, but with a newer cheshire that doesn’t interfere with clj-json
- improved commit from pull/55 to make the predicate more generalized to any kind of entity request
- make Cheshire an optional dependency, only for {:as :json} and json form-params
- merged dakrone#55 to fix HEAD requests with body contents
- merged dakrone#53 to add status functions into the clj-http.client namespace
- added the ability to specify {:as :clojure} to get back a clojure datastructure, or {:as :auto} with content-type=application/clojure
- merged dakrone#52 to support json-encoded form params
- added a test for json-encoded form params as request body
- merged dakrone#51 to allow :form-params on PUT requests
- bump Cheshire and slingshot deps
- add the :throw-entire-message? option to include resp in Exception message
- throw an IllegalArgumentException instead of a regulor Exception on nil urls
- add ability to redirect to relative paths (ngrunwald)
- merged dakrone#48 to fix :stream bodies (to make sure they are not coerced on output)
- merged dakrone#49 to check for nil URLs when using client functions
- switch from assertions to exceptions for nil URLs
- merged dakrone#46 to add :trace-redirects to the response map
- merged dakrone#47 to allow GET requests with a :body set
- merged dakrone#44 to add ability to specify maximum number of redirects
- add tests for max-redirects
- merged dakrone#42 to allow strings or keywords for :scheme in requests
- added test for different :schemes
- merged dakrone#40 to allow per-request proxy settings
- remove a few more reflections
- added ablity to return the body as a stream with {:as :stream}
- general code cleanup
- add ability to ignore unknown host if desired ({:ignore-unknown-host? true})
- use much better Enitity’s for the body, depending on type
- bump all dependencies
- test re-org to make better sense (and allow C-c t in emacs)
- merged dakrone#36 to fix url-encoding of multiple query params using the same key
- merged dakrone#34 to fix decoding cookies that don’t follow RFC spec
- Add better coercion, adding {:as :json}, {:as :json-string-keys} and {:as :auto}
- merged dakrone#31 to remove more reflection warnings
- some whitespace changes
- merged dakrone#30 to remove more reflection warnings
- removed swank from dev deps
- bump 1.4 to alpha3 in multi deps
- don’t use :server-port unless required (fixes problem with some web servers)
- smaller error message on exceptions (thrown object is still the same)
- added the :save-request? option to return the request object in a :request key in the response map
- multiple headers with the same name are now preserved when they have differing cases
- multipart form uploads
- bump slingshot to 0.9.0
- Got a functioning reusable connection method, (with-connection-pool …)
- upgrade slingshot to 0.8.0
- upgrade commons-io to 2.1
- merged dakrone#20 to allow :basic-auth as a string
- added :insecure? flag
- fix AOT by requiring clojure.pprint
- wrap-redirects now handles recursive redirects
- wrap-exceptions now uses Slingshot to throw a much more useful exception when there was a problem with the request
- fixed an issue when malformed server responses could NPE the decompression middleware
- added a :debug flag to pretty-print the request map and object to stdout before performing the request to aid in debugging
- decode cookies from response into :cookies (thanks r0man)
- redone redirects, they can now be toggled with {:follow-redirects false} in the request
- decompression of responses has been fixed (thanks senior)
- accept Content-Encoding or content-encoding from responses (thanks senior)
- added ability to specify sending a url-encoded :body of form params using {:form-params {:key value}} (thanks senior)
- updated dependencies to be the latest versions
- added ability to use system proxy for connections (thanks jou4)
- added ability to specify socket and connection timeouts in request (thanks zkim)
Log of merges/issues/work that’s gone in so I know what to put in the changelog for the next release
- merged dakrone#146 to correctly reference parameter names
- Only redirect if a “location” header is actually, present, avoiding an NPE in the event it’s missing. (fixes #145)
- merged dakrone#143 for fixing some weirdness around body streams and inflation
- streams everywhere, all bodies coming out of core.clj are now streams, so {:as :stream} truly streams the response, keeping it out of memory
- remove some more reflection
- correctly close single client connection manager if {:as :stream} is used, fixes #142
- merged dakrone#138 to preserve http method for 307 redirect
- merged in parse-url parameters into follow-redirect so request map is not inconsistent
- bumped http* deps to 4.2.5
- fixed cookie compact-map not to remove falsey values, only nil ones
- merged dakrone#135 to fix discard always defaulting to true
- add current-middleware to see available middleware during a with-middleware request (for nesting)
- merged dakrone#127 to allow custom cookie policies
- allow specifying :length for mulitpart inputstream bodies to avoid chunked transfer encoding
- bumped cheshire to 5.1.1
- merged dakrone#133 to remove some reflection
- clarify :throw-exceptions in documentation
- define default-middleware for use in wrap-request, remove bad all-middleware method
- merged dakrone#130 to encode query-params
- merged dakrone#124 to handle URL-encoding invalid characters in the URI
- bump cheshire to 5.1.0
- Switch from deprecated SingleClientConnManager to BasicClientConnectionManager
- merged dakrone#126 to bump httpcore version
- bump dependencies to latest versions
- merged dakrone#122 for using data-readers when using tools.reader to parse EDN
- fix an issue with 1.3 where data-readers is not available
- merged dakrone#121 to fix auto-coercion with json
- support application/edn as an auto-coercion type
- add tools.reader as an optional dependency, edn/read will be used if available, otherwise read-string with read-eval bound to false is used. See dakrone#120
- Bump clojure to 1.5.1
- allow json coercion for exception cases based on :coerce setting, can be either :always, :exceptional or :unexceptional
- bump cheshire to 5.0.2
- Update clojure to 1.5
- Move SingleClientConnManager shutdown into finally block
- bind read-eval to false when reading for {:as :clojure}
- merged dakrone#113 to update the connection pooling code
- refactor pooled connection managers to allow specifying the :connection-manager option
- merged dakrone#112 to allow json coercion on error responses when :as :auto is used
- allow redirects when :url is not set in the request
- merged dakrone#110 to handle the case when the server-side uses deflate incorrectly
- added `with-middleware` to allow running requests with a custom middleware list
- added `all-middleware` var listing all the wrap-* middleware that clj-http knows of
- clj-http.client/request is now marked as dynamic for rebinding
- Remove wrap-cookie-store middleware, CookieStore headers are automatically added by Apache
- set the SINGLE_COOKIE_HEADER value to true to ensure Apache sends only one “Cookie:” header
- Do not add CookieStore or Cookie header if there are no cookies in the cookie jar
- merged dakrone#106 to remove query params for redirection.
- whitespace fixes; fix test that wasn’t working correctly
- bump httpcore to 4.2.3
- Fix an issue (#105) related to the “Content-Length” header being automatically added to GET requests
- Update Cheshire to 5.0.1
- Add type hint for getting headers from body (michaelklishin)
- merged dakrone#101 to allow request headers to specify multiple values
- add buffering for HttpEntity, with ability to turn off if needed, fixes lein issue with repeatable requests
- create a custom X509HostnameVerifier for the :insecure? option
- explicitly require httpcore instead of leaving it to a transitive dep
- update httpcomponents to 4.2.2
- implement HTML5 charset header reading from body
- bump Crouton to 0.1.1 for faster speeds
- add feature to decode body headers, merging them into response headers if they are present
- merged dakrone#98 to add optional :default-per-route to with-connection-pool
- bump cheshire to fix json bug
- add a test for :conn-timeout
- merged dakrone#95 to add support for setting aribtrary client params to the http client
- Merged dakrone#94 to remove some reflection
- update cheshire dep, make clojure a dev-dependency
- allow overriding the multipart part name with :part-name
- merged dakrone#91 to add support for :digest-auth
- added request timing middleware to add :request-time key for request timing
- add wrap-cookie-store to send cookie-store cookies with a request automatically
- merged dakrone#90 to standardize on lower-case headers for HTTP requests
- merged dakrone#88 to add chunked encoding
support (
:length
no longer required along with input stream:body
)
- fix clojure 1.3’s exception wrapping for some exceptions
- merged dakrone#87 to allow using http.nonProxyHosts
- mark json-encode and json-decode dynamic, so they could be rebound if desired
- update httpclient and httpmime to 4.2.1
- update commons-codec to 1.6
- update common-io to 2.4
- change body decompression to be optional, if desired
- make the :content-type and :character-encoding options part of middleware, not the core request
- document all the middleware
- merged dakrone#85 to allow low-level callback for debugging
- rewrite multipart body entity creation to use different map format, allowing :mime-type and :encoding keys in some cases
- bump cheshire to 4.0.1 and slingshot to 0.10.3
- fix an issue where cookies were encoded and should not be
- merged dakrone#80 to allow specifying the keystore type
- merged dakrone#79 to allow pluggable output coercion (multimethod)
- merged dakrone#77 to support custom x509 keystore/trust-stores
- merged dakrone#78 for x509 tests
- fixed an issue where multiple link headers would cause an exception to be thrown
- added :debug-body that adds plaintext body information to the :debug output
- fix json encoded form params with nested maps
- fix attempted json coercion when a bad status is received
- merged dakrone#69 to add support for :oauth-token authentication
- merged dakrone#70 to save the apache Http object when :save-request? is true
- merged dakrone#68 to support additional options/delete/copy/move HTTP methods
- add support for the :patch method type
- merged dakrone#66 to add support for ‘Link’ header
- added ability to specify your own retry-handler for IOExceptions if desired
- bumped httpclient and httpmime to 4.1.3
- bump to released version of clojure (1.4)
- added documentation about ipv6 requests
- fixed dakrone#57 by have wrap-redirects redirect according to the RFC and adding the :force-redirects option to be more browser-like
- merged dakrone#61 to add support for nested param maps
- fixed an issue where urls like http://user:[email protected] didn’t work correctly for basic-auth
- merged dakrone#58 to add support for cookie stores
- added utility methods to retrieve cookies as a map from the cookie store
- merged dakrone#56 to set the default maximum number of redirects to 20
- improved commit from pull/55 to make the predicate more generalized to any kind of entity request
- make Cheshire an optional dependency, only for {:as :json} and json form-params
- document clj-json/cheshire incompatibility problems
- merged dakrone#55 to fix HEAD requests with body contents
- merged dakrone#53 to add status functions into the clj-http.client namespace
- added the ability to specify {:as :clojure} to get back a clojure datastructure, or {:as :auto} with content-type=application/clojure
- merged dakrone#52 to support json-encoded form params
- added a test for json-encoded form params as request body
- merged dakrone#51 to allow :form-params on PUT requests
- bump Cheshire and slingshot deps
- add the :throw-entire-message? option to include resp in Exception message
- throw an IllegalArgumentException instead of a regulor Exception on nil urls
- add ability to redirect to relative paths (ngrunwald)
- merged dakrone#48 to fix :stream bodies (to make sure they are not coerced on output)
- merged dakrone#49 to check for nil URLs when using client functions
- switch from assertions to exceptions for nil URLs
- merged dakrone#46 to add :trace-redirects to the response map
- whitespace changes
- merged dakrone#47 to allow GET requests with a :body set
- merged dakrone#44 to add ability to specify maximum number of redirects
- add tests for max-redirects
- merged dakrone#42 to allow strings or keywords for :scheme in requests
- added test for different :schemes
- merged dakrone#40 to allow per-request proxy settings
- remove a few more reflections
- added ablity to return the body as a stream with {:as :stream}
- general code cleanup
- add ability to ignore unknown host if desired ({:ignore-unknown-host? true})
- use much better Enitity’s for the body, depending on type
- bump all dependencies
- test re-org to make better sense (and allow C-c t in emacs)
- merged dakrone#36 to fix url-encoding of multiple query params using the same key
- merged dakrone#34 to fix decoding cookies that don’t follow RFC spec
- Add better coercion, adding {:as :json}, {:as :json-string-keys} and {:as :auto}
- merged dakrone#31 to remove more reflection warnings
- some whitespace changes
- merged dakrone#30 to remove more reflection warnings
- removed swank from dev deps
- bump 1.4 to alpha3 in multi deps
- merged dakrone#27 to only use :server-port for non-standard ports. This was causing problems for some web servers
- remove :save-request? from the saved request map (if it’s being saved, you probably already know you wanted to save it…)
- added the ‘safe-request?’ flag option to save the entire request in the :request key in the response object, several people have requested this
- refactor some of the param setting out of the request method in an effort to make it slightly smaller
- merged in a pull request fixing headers when multiple headers are received: dakrone#25
- merged dakrone#24 for a smaller error message
- finish up the multipart work, thanks to some testing cases from Raynes
- document multipart posts in readme
- Got a functioning reusable connection method, (with-connection-pool …)
- merged dakrone#21 to upgrade slingshot to 0.8.0
- merged dakrone#20 to allow :basic-auth as a string
- changed wrap-redirects to recursively handle redirects instead of only redirecting one-level down
- remove some reflection in cookies by defining ClientCookie
- merged dakrone#16 to add an :insecure? flag to ignore SSL errors
- merged dakrone#13 to add a require for pprint in core
- added the :debug option to requests
- restarted an exception branch that uses Slingshot to throw a much more useful exception
- fixed an issue when malformed server responses could NPE the decompression middleware
- merged dakrone#7 to accept both Content-Encoding and content-encoding, since ring uses the lowercase version
- merged dakrone#6 to allow for sending form params with :form-params as a urlencoded body on POST requests
- merged dakrone#5 to fix decompression
- added ability to turn off redirects with {:follow-redirects false} in the request
- merged dakrone#2 to fix redirects
- merged dakrone#1 for decoding cookies in responses
- took over maintenance from Mark
- updated dependencies
- merged jou4’s branch to allow proxy usage
- merged zkim’s branch for specifying timeouts