395 lines
12 KiB
Markdown
395 lines
12 KiB
Markdown
|
## 5.2.4 (2021-09-12)
|
||
|
|
||
|
* Keep original cookies between redirections (@antprt)
|
||
|
|
||
|
## 5.2.3 (2021-08-03)
|
||
|
|
||
|
* Bump addressable version requirement to 2.8+ to remediate vulnerability (@aldodelgado)
|
||
|
|
||
|
## 5.2.2 (2021-05-27)
|
||
|
|
||
|
* Add info about received content length in `Down::TooLarge` error (@evheny0)
|
||
|
|
||
|
* Relax http.rb constraint to allow versions 5.x (@mgrunberg)
|
||
|
|
||
|
## 5.2.1 (2021-04-26)
|
||
|
|
||
|
* Raise `Down::NotModified` on 304 response status in `Down::NetHttp#open` (@ellafeldmann)
|
||
|
|
||
|
## 5.2.0 (2020-09-20)
|
||
|
|
||
|
* Add `:uri_normalizer` option to `Down::NetHttp` (@janko)
|
||
|
|
||
|
* Add `:http_basic_authentication` option to `Down::NetHttp#open` (@janko)
|
||
|
|
||
|
* Fix uninitialized instance variables warnings in `Down::ChunkedIO` (@janko)
|
||
|
|
||
|
* Handle unknown HTTP error codes in `Down::NetHttp` (@darndt)
|
||
|
|
||
|
## 5.1.1 (2020-02-04)
|
||
|
|
||
|
* Fix keyword arguments warnings on Ruby 2.7 in `Down.download` and `Down.open` (@janko)
|
||
|
|
||
|
## 5.1.0 (2020-01-09)
|
||
|
|
||
|
* Fix keyword arguments warnings on Ruby 2.7 (@janko)
|
||
|
|
||
|
* Fix `FrozenError` exception in `Down::ChunkedIO#readpartial` (@janko)
|
||
|
|
||
|
* Deprecate passing headers as top-level options in `Down::NetHttp` (@janko)
|
||
|
|
||
|
## 5.0.1 (2019-12-20)
|
||
|
|
||
|
* In `Down::NetHttp` only use Addressable normalization if `URI.parse` fails (@coding-chimp)
|
||
|
|
||
|
## 5.0.0 (2019-09-26)
|
||
|
|
||
|
* Change `ChunkedIO#each_chunk` to return chunks in original encoding (@janko)
|
||
|
|
||
|
* Always return binary strings in `ChunkedIO#readpartial` (@janko)
|
||
|
|
||
|
* Handle frozen chunks in `Down::ChunkedIO` (@janko)
|
||
|
|
||
|
* Change `ChunkedIO#gets` to return lines in specified encoding (@janko)
|
||
|
|
||
|
* Halve memory allocation for `ChunkedIO#gets` (@janko)
|
||
|
|
||
|
* Halve memory allocation for `ChunkedIO#read` without arguments (@janko)
|
||
|
|
||
|
* Drop support for `HTTP::Client` argument in `Down::HTTP.new` (@janko)
|
||
|
|
||
|
* Repurpose `Down::NotFound` to be raised on `404 Not Found` response (@janko)
|
||
|
|
||
|
## 4.8.1 (2019-05-01)
|
||
|
|
||
|
* Make `ChunkedIO#read`/`#readpartial` with length always return strings in binary encoding (@janko)
|
||
|
|
||
|
* In `ChunkedIO#gets` respect the limit argument when separator is nil (@edlebert)
|
||
|
|
||
|
## 4.8.0 (2018-12-19)
|
||
|
|
||
|
* Prefer UTF-8 filenames in `Content-Disposition` header for `Tempfile#original_filename` (@janko)
|
||
|
|
||
|
* Make the internal Tempfile of `Down::ChunkedIO` inaccessible to outside programs (@janko)
|
||
|
|
||
|
## 4.7.0 (2018-11-18)
|
||
|
|
||
|
* Allow request headers to be passed via `:headers` to `Down::NetHttp#download` and `#open` (@janko)
|
||
|
|
||
|
## 4.6.1 (2018-10-24)
|
||
|
|
||
|
* Release HTTP.rb version constraint to allow HTTP.rb 4.x (@janko)
|
||
|
|
||
|
## 4.6.0 (2018-09-29)
|
||
|
|
||
|
* Ensure URLs are properly encoded in `NetHttp#download` and `#open` using Addressable (@linyaoli)
|
||
|
|
||
|
* Raise `ResponseError` with clear message when redirect URI was invalid in Down::NetHttp (@janko)
|
||
|
|
||
|
## 4.5.0 (2018-05-11)
|
||
|
|
||
|
* Deprecate passing an `HTTP::Client` object to `Down::Http#initialize` (@janko)
|
||
|
|
||
|
* Add ability to pass a block to `Down::Http#initialize` for extending default options (@janko)
|
||
|
|
||
|
* Return empty string when length is zero in `ChunkedIO#read` and `ChunkedIO#readpartial` (@janko)
|
||
|
|
||
|
* Make `posix-spawn` optional (@janko)
|
||
|
|
||
|
## 4.4.0 (2018-04-12)
|
||
|
|
||
|
* Add `:method` option to `Down::Http` for specifying the request method (@janko)
|
||
|
|
||
|
* Set default timeout of 30 for each operation to all backends (@janko)
|
||
|
|
||
|
## 4.3.0 (2018-03-11)
|
||
|
|
||
|
* Accept CLI arguments as a list of symbols in `Down::Wget#download` (@janko)
|
||
|
|
||
|
* Avoid potential URL parsing errors in `Down::Http::DownloadedFile#filename_from_url` (@janko)
|
||
|
|
||
|
* Make memory usage of `Down::Wget#download` constant (@janko)
|
||
|
|
||
|
* Add `:destination` option to `Down.download` for specifying download destination (@janko)
|
||
|
|
||
|
## 4.2.1 (2018-01-29)
|
||
|
|
||
|
* Reduce memory allocation in `Down::ChunkedIO` by 10x when buffer string is used (@janko)
|
||
|
|
||
|
* Reduce memory allocation in `Down::Http.download` by 10x.
|
||
|
|
||
|
## 4.2.0 (2017-12-22)
|
||
|
|
||
|
* Handle `:max_redirects` in `Down::NetHttp#open` and follow up to 2 redirects by default (@janko)
|
||
|
|
||
|
## 4.1.1 (2017-10-15)
|
||
|
|
||
|
* Raise all system call exceptions as `Down::ConnectionError` in `Down::NetHttp` (@janko)
|
||
|
|
||
|
* Raise `Errno::ETIMEDOUT` as `Down::TimeoutError` in `Down::NetHttp` (@janko)
|
||
|
|
||
|
* Raise `Addressable::URI::InvalidURIError` as `Down::InvalidUrl` in `Down::Http` (@janko)
|
||
|
|
||
|
## 4.1.0 (2017-08-29)
|
||
|
|
||
|
* Fix `FiberError` occurring on `Down::NetHttp.open` when response is chunked and gzipped (@janko)
|
||
|
|
||
|
* Use a default `User-Agent` in `Down::NetHttp.open` (@janko)
|
||
|
|
||
|
* Fix raw read timeout error sometimes being raised instead of `Down::TimeoutError` in `Down.open` (@janko)
|
||
|
|
||
|
* `Down::ChunkedIO` can now be parsed by the CSV Ruby standard library (@janko)
|
||
|
|
||
|
* Implement `Down::ChunkedIO#gets` (@janko)
|
||
|
|
||
|
* Implement `Down::ChunkedIO#pos` (@janko)
|
||
|
|
||
|
## 4.0.1 (2017-07-08)
|
||
|
|
||
|
* Load and assign the `NetHttp` backend immediately on `require "down"` (@janko)
|
||
|
|
||
|
* Remove undocumented `Down::ChunkedIO#backend=` that was added in 4.0.0 to avoid confusion (@janko)
|
||
|
|
||
|
## 4.0.0 (2017-06-24)
|
||
|
|
||
|
* Don't apply `Down.download` and `Down.open` overrides when loading a backend (@janko)
|
||
|
|
||
|
* Remove `Down::Http.client` attribute accessor (@janko)
|
||
|
|
||
|
* Make `Down::NetHttp`, `Down::Http`, and `Down::Wget` classes instead of modules (@janko)
|
||
|
|
||
|
* Remove `Down.copy_to_tempfile` (@janko)
|
||
|
|
||
|
* Add Wget backend (@janko)
|
||
|
|
||
|
* Add `:content_length_proc` and `:progress_proc` to the HTTP.rb backend (@janko)
|
||
|
|
||
|
* Halve string allocations in `Down::ChunkedIO#readpartial` when buffer string is not used (@janko)
|
||
|
|
||
|
## 3.2.0 (2017-06-21)
|
||
|
|
||
|
* Add `Down::ChunkedIO#readpartial` for more memory efficient reading (@janko)
|
||
|
|
||
|
* Fix `Down::ChunkedIO` not returning second part of the last chunk if it was previously partially read (@janko)
|
||
|
|
||
|
* Strip internal variables from `Down::ChunkedIO#inspect` and show only the important ones (@janko)
|
||
|
|
||
|
* Add `Down::ChunkedIO#closed?` (@janko)
|
||
|
|
||
|
* Add `Down::ChunkedIO#rewindable?` (@janko)
|
||
|
|
||
|
* In `Down::ChunkedIO` only create the Tempfile if it's going to be used (@janko)
|
||
|
|
||
|
## 3.1.0 (2017-06-16)
|
||
|
|
||
|
* Split `Down::NotFound` into explanatory exceptions (@janko)
|
||
|
|
||
|
* Add `:read_timeout` and `:open_timeout` options to `Down::NetHttp.open` (@janko)
|
||
|
|
||
|
* Return an `Integer` in `data[:status]` on a result of `Down.open` when using the HTTP.rb strategy (@janko)
|
||
|
|
||
|
## 3.0.0 (2017-05-24)
|
||
|
|
||
|
* Make `Down.open` pass encoding from content type charset to `Down::ChunkedIO` (@janko)
|
||
|
|
||
|
* Add `:encoding` option to `Down::ChunkedIO.new` for specifying the encoding of returned content (@janko)
|
||
|
|
||
|
* Add HTTP.rb backend as an alternative to Net::HTTP (@janko)
|
||
|
|
||
|
* Stop testing on MRI 2.1 (@janko)
|
||
|
|
||
|
* Forward cookies from the `Set-Cookie` response header when redirecting (@janko)
|
||
|
|
||
|
* Add `frozen-string-literal: true` comments for less string allocations on Ruby 2.3+ (@janko)
|
||
|
|
||
|
* Modify `#content_type` to return nil instead of `application/octet-stream` when `Content-Type` is blank in `Down.download` (@janko)
|
||
|
|
||
|
* `Down::ChunkedIO#read`, `#each_chunk`, `#eof?`, `rewind` now raise an `IOError` when `Down::ChunkedIO` has been closed (@janko)
|
||
|
|
||
|
* `Down::ChunkedIO` now caches only the content that has been read (@janko)
|
||
|
|
||
|
* Add `Down::ChunkedIO#size=` to allow assigning size after the `Down::ChunkedIO` has been instantiated (@janko)
|
||
|
|
||
|
* Make `:size` an optional argument in `Down::ChunkedIO` (@janko)
|
||
|
|
||
|
* Call enumerator's `ensure` block when `Down::ChunkedIO#close` is called (@janko)
|
||
|
|
||
|
* Add `:rewindable` option to `Down::ChunkedIO` and `Down.open` for disabling caching read content into a file (@janko)
|
||
|
|
||
|
* Drop support for MRI 2.0 (@janko)
|
||
|
|
||
|
* Drop support for MRI 1.9.3 (@janko)
|
||
|
|
||
|
* Remove deprecated `:progress` option (@janko)
|
||
|
|
||
|
* Remove deprecated `:timeout` option (@janko)
|
||
|
|
||
|
* Reraise only a subset of exceptions as `Down::NotFound` in `Down.download` (@janko)
|
||
|
|
||
|
* Support streaming of "Transfer-Encoding: chunked" responses in `Down.open` again (@janko)
|
||
|
|
||
|
* Remove deprecated `Down.stream` (@janko)
|
||
|
|
||
|
## 2.5.1 (2017-05-13)
|
||
|
|
||
|
* Remove URL from the error messages (@janko)
|
||
|
|
||
|
## 2.5.0 (2017-05-03)
|
||
|
|
||
|
* Support both Strings and `URI` objects in `Down.download` and `Down.open` (@olleolleolle)
|
||
|
|
||
|
* Work around a `CGI.unescape` bug in Ruby 2.4.
|
||
|
|
||
|
* Apply HTTP Basic authentication contained in URLs in `Down.open`.
|
||
|
|
||
|
* Raise `Down::NotFound` on 4xx and 5xx responses in `Down.open`.
|
||
|
|
||
|
* Write `:status` and `:headers` information to `Down::ChunkedIO#data` in `Down.open`.
|
||
|
|
||
|
* Add `#data` attribute to `Down::ChunkedIO` for saving custom result data.
|
||
|
|
||
|
* Don't save retrieved chunks into the file in `Down::ChunkedIO#each_chunk`.
|
||
|
|
||
|
* Add `:proxy` option to `Down.download` and `Down.open`.
|
||
|
|
||
|
## 2.4.3 (2017-04-06)
|
||
|
|
||
|
* Show the input URL in the `Down::Error` message.
|
||
|
|
||
|
## 2.4.2 (2017-03-28)
|
||
|
|
||
|
* Don't raise `StopIteration` in `Down::ChunkedIO` when `:chunks` is an empty
|
||
|
Enumerator.
|
||
|
|
||
|
## 2.4.1 (2017-03-23)
|
||
|
|
||
|
* Correctly detect empty filename from `Content-Disposition` header, and
|
||
|
in this case continue extracting filename from URL.
|
||
|
|
||
|
## 2.4.0 (2017-03-19)
|
||
|
|
||
|
* Allow `Down.open` to accept request headers as options with String keys,
|
||
|
just like `Down.download` does.
|
||
|
|
||
|
* Decode URI-decoded filenames from the `Content-Disposition` header
|
||
|
|
||
|
* Parse filenames without quotes from the `Content-Disposition` header
|
||
|
|
||
|
## 2.3.8 (2016-11-07)
|
||
|
|
||
|
* Work around `Transfer-Encoding: chunked` responses by downloading whole
|
||
|
response body.
|
||
|
|
||
|
## 2.3.7 (2016-11-06)
|
||
|
|
||
|
* In `Down.open` send requests using the URI *path* instead of the full URI.
|
||
|
|
||
|
## 2.3.6 (2016-07-26)
|
||
|
|
||
|
* Read #original_filename from the "Content-Disposition" header.
|
||
|
|
||
|
* Extract `Down::ChunkedIO` into a file, so that it can be required separately.
|
||
|
|
||
|
* In `Down.stream` close the IO after reading from it.
|
||
|
|
||
|
## 2.3.5 (2016-07-18)
|
||
|
|
||
|
* Prevent reading the whole response body when the IO returned by `Down.open`
|
||
|
is closed.
|
||
|
|
||
|
## 2.3.4 (2016-07-14)
|
||
|
|
||
|
* Require `net/http`
|
||
|
|
||
|
## 2.3.3 (2016-06-23)
|
||
|
|
||
|
* Improve `Down::ChunkedIO` (and thus `Down.open`):
|
||
|
|
||
|
- `#each_chunk` and `#read` now automatically call `:on_close` when all
|
||
|
chunks were downloaded
|
||
|
|
||
|
- `#eof?` had incorrect behaviour, where it would return true if
|
||
|
everything was downloaded, instead only when it's also at the end of
|
||
|
the file
|
||
|
|
||
|
- `#close` can now be called multiple times, as the `:on_close` will always
|
||
|
be called only once
|
||
|
|
||
|
- end of download is now detected immediately when the last chunk was
|
||
|
downloaded (as opposed to after trying to read the next one)
|
||
|
|
||
|
## 2.3.2 (2016-06-22)
|
||
|
|
||
|
* Add `Down.open` for IO-like streaming, and deprecate `Down.stream` (janko-m)
|
||
|
|
||
|
* Allow URLs with basic authentication (`http://user:password@example.com`) (janko-m)
|
||
|
|
||
|
## ~~2.3.1 (2016-06-22)~~ (yanked)
|
||
|
|
||
|
## ~~2.3.0 (2016-06-22)~~ (yanked)
|
||
|
|
||
|
## 2.2.1 (2016-06-06)
|
||
|
|
||
|
* Make Down work on Windows (martinsefcik)
|
||
|
|
||
|
* Close an internal file descriptor that was left open (martinsefcik)
|
||
|
|
||
|
## 2.2.0 (2016-05-19)
|
||
|
|
||
|
* Add ability to follow redirects, and allow maximum of 2 redirects by default (janko-m)
|
||
|
|
||
|
* Fix a potential Windows issue when extracting `#original_filename` (janko-m)
|
||
|
|
||
|
* Fix `#original_filename` being incomplete if filename contains a slash (janko-m)
|
||
|
|
||
|
## 2.1.0 (2016-04-12)
|
||
|
|
||
|
* Make `:progress_proc` and `:content_length_proc` work with `:max_size` (janko-m)
|
||
|
|
||
|
* Deprecate `:progress` in favor of open-uri's `:progress_proc` (janko-m)
|
||
|
|
||
|
* Deprecate `:timeout` in favor of open-uri's `:open_timeout` and `:read_timeout` (janko-m)
|
||
|
|
||
|
* Add `Down.stream` for streaming remote files in chunks (janko-m)
|
||
|
|
||
|
* Replace deprecated `URI.encode` with `CGI.unescape` in downloaded file's `#original_filename` (janko-m)
|
||
|
|
||
|
## 2.0.1 (2016-03-06)
|
||
|
|
||
|
* Add error message when file was to large, and use a simple error message for other generic download failures (janko-m)
|
||
|
|
||
|
## 2.0.0 (2016-02-03)
|
||
|
|
||
|
* Fix an issue where valid URLs were transformed into invalid URLs (janko-m)
|
||
|
|
||
|
- All input URLs now have to be properly encoded, which should already be the
|
||
|
case in most situations.
|
||
|
|
||
|
* Include the error class when download fails (janko-m)
|
||
|
|
||
|
## 1.1.0 (2016-01-26)
|
||
|
|
||
|
* Forward all additional options to open-uri (janko-m)
|
||
|
|
||
|
## 1.0.5 (2015-12-18)
|
||
|
|
||
|
* Move the open-uri file to the new location instead of copying it (janko-m)
|
||
|
|
||
|
## 1.0.4 (2015-11-19)
|
||
|
|
||
|
* Delete the old open-uri file after using it (janko-m)
|
||
|
|
||
|
## 1.0.3 (2015-11-16)
|
||
|
|
||
|
* Fix `#download` and `#copy_to_tempfile` not preserving the file extension (janko-m)
|
||
|
|
||
|
* Fix `#copy_to_tempfile` not working when given a nested basename (janko-m)
|
||
|
|
||
|
## 1.0.2 (2015-10-24)
|
||
|
|
||
|
* Fix Down not working with Ruby 1.9.3 (janko-m)
|
||
|
|
||
|
## 1.0.1 (2015-10-01)
|
||
|
|
||
|
* Don't allow redirects when downloading files (janko-m)
|