-
Drop support for Ruby 2.3 (@janko)
-
Deprecate wget backend (@janko)
- Add support for HTTPX 1.x (@HoneyryderChuck)
-
Handle additional params in
Content-Dispositionheader (@janko) -
Add ability to detect response URI when using net/http (@aglushkov)
-
Avoid deprecation warning in HTTPX (@ollym)
-
Handle unknown response status in net/http backend (@janko)
- Add new HTTPX backend, which supports HTTP/2 protocol among other features (@HoneyryderChuck)
- Correctly split cookie headers on
;instead of,when forwarding them on redirects (@ermolaev)
-
Add
:extensionargument toDown.downloadfor overriding tempfile extension (@razum2um) -
Normalize response header names for http.rb and wget backends (@zarqman)
- Keep original cookies between redirections (@antprt)
- Bump addressable version requirement to 2.8+ to remediate vulnerability (@aldodelgado)
-
Add info about received content length in
Down::TooLargeerror (@evheny0) -
Relax http.rb constraint to allow versions 5.x (@mgrunberg)
- Raise
Down::NotModifiedon 304 response status inDown::NetHttp#open(@ellafeldmann)
-
Add
:uri_normalizeroption toDown::NetHttp(@janko) -
Add
:http_basic_authenticationoption toDown::NetHttp#open(@janko) -
Fix uninitialized instance variables warnings in
Down::ChunkedIO(@janko) -
Handle unknown HTTP error codes in
Down::NetHttp(@darndt)
- Fix keyword arguments warnings on Ruby 2.7 in
Down.downloadandDown.open(@janko)
-
Fix keyword arguments warnings on Ruby 2.7 (@janko)
-
Fix
FrozenErrorexception inDown::ChunkedIO#readpartial(@janko) -
Deprecate passing headers as top-level options in
Down::NetHttp(@janko)
- In
Down::NetHttponly use Addressable normalization ifURI.parsefails (@coding-chimp)
-
Change
ChunkedIO#each_chunkto return chunks in original encoding (@janko) -
Always return binary strings in
ChunkedIO#readpartial(@janko) -
Handle frozen chunks in
Down::ChunkedIO(@janko) -
Change
ChunkedIO#getsto return lines in specified encoding (@janko) -
Halve memory allocation for
ChunkedIO#gets(@janko) -
Halve memory allocation for
ChunkedIO#readwithout arguments (@janko) -
Drop support for
HTTP::Clientargument inDown::HTTP.new(@janko) -
Repurpose
Down::NotFoundto be raised on404 Not Foundresponse (@janko)
-
Make
ChunkedIO#read/#readpartialwith length always return strings in binary encoding (@janko) -
In
ChunkedIO#getsrespect the limit argument when separator is nil (@edlebert)
-
Prefer UTF-8 filenames in
Content-Dispositionheader forTempfile#original_filename(@janko) -
Make the internal Tempfile of
Down::ChunkedIOinaccessible to outside programs (@janko)
- Allow request headers to be passed via
:headerstoDown::NetHttp#downloadand#open(@janko)
- Release HTTP.rb version constraint to allow HTTP.rb 4.x (@janko)
-
Ensure URLs are properly encoded in
NetHttp#downloadand#openusing Addressable (@linyaoli) -
Raise
ResponseErrorwith clear message when redirect URI was invalid in Down::NetHttp (@janko)
-
Deprecate passing an
HTTP::Clientobject toDown::Http#initialize(@janko) -
Add ability to pass a block to
Down::Http#initializefor extending default options (@janko) -
Return empty string when length is zero in
ChunkedIO#readandChunkedIO#readpartial(@janko) -
Make
posix-spawnoptional (@janko)
-
Add
:methodoption toDown::Httpfor specifying the request method (@janko) -
Set default timeout of 30 for each operation to all backends (@janko)
-
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#downloadconstant (@janko) -
Add
:destinationoption toDown.downloadfor specifying download destination (@janko)
-
Reduce memory allocation in
Down::ChunkedIOby 10x when buffer string is used (@janko) -
Reduce memory allocation in
Down::Http.downloadby 10x.
- Handle
:max_redirectsinDown::NetHttp#openand follow up to 2 redirects by default (@janko)
-
Raise all system call exceptions as
Down::ConnectionErrorinDown::NetHttp(@janko) -
Raise
Errno::ETIMEDOUTasDown::TimeoutErrorinDown::NetHttp(@janko) -
Raise
Addressable::URI::InvalidURIErrorasDown::InvalidUrlinDown::Http(@janko)
-
Fix
FiberErroroccurring onDown::NetHttp.openwhen response is chunked and gzipped (@janko) -
Use a default
User-AgentinDown::NetHttp.open(@janko) -
Fix raw read timeout error sometimes being raised instead of
Down::TimeoutErrorinDown.open(@janko) -
Down::ChunkedIOcan now be parsed by the CSV Ruby standard library (@janko) -
Implement
Down::ChunkedIO#gets(@janko) -
Implement
Down::ChunkedIO#pos(@janko)
-
Load and assign the
NetHttpbackend immediately onrequire "down"(@janko) -
Remove undocumented
Down::ChunkedIO#backend=that was added in 4.0.0 to avoid confusion (@janko)
-
Don't apply
Down.downloadandDown.openoverrides when loading a backend (@janko) -
Remove
Down::Http.clientattribute accessor (@janko) -
Make
Down::NetHttp,Down::Http, andDown::Wgetclasses instead of modules (@janko) -
Remove
Down.copy_to_tempfile(@janko) -
Add Wget backend (@janko)
-
Add
:content_length_procand:progress_procto the HTTP.rb backend (@janko) -
Halve string allocations in
Down::ChunkedIO#readpartialwhen buffer string is not used (@janko)
-
Add
Down::ChunkedIO#readpartialfor more memory efficient reading (@janko) -
Fix
Down::ChunkedIOnot returning second part of the last chunk if it was previously partially read (@janko) -
Strip internal variables from
Down::ChunkedIO#inspectand show only the important ones (@janko) -
Add
Down::ChunkedIO#closed?(@janko) -
Add
Down::ChunkedIO#rewindable?(@janko) -
In
Down::ChunkedIOonly create the Tempfile if it's going to be used (@janko)
-
Split
Down::NotFoundinto explanatory exceptions (@janko) -
Add
:read_timeoutand:open_timeoutoptions toDown::NetHttp.open(@janko) -
Return an
Integerindata[:status]on a result ofDown.openwhen using the HTTP.rb strategy (@janko)
-
Make
Down.openpass encoding from content type charset toDown::ChunkedIO(@janko) -
Add
:encodingoption toDown::ChunkedIO.newfor 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-Cookieresponse header when redirecting (@janko) -
Add
frozen-string-literal: truecomments for less string allocations on Ruby 2.3+ (@janko) -
Modify
#content_typeto return nil instead ofapplication/octet-streamwhenContent-Typeis blank inDown.download(@janko) -
Down::ChunkedIO#read,#each_chunk,#eof?,rewindnow raise anIOErrorwhenDown::ChunkedIOhas been closed (@janko) -
Down::ChunkedIOnow caches only the content that has been read (@janko) -
Add
Down::ChunkedIO#size=to allow assigning size after theDown::ChunkedIOhas been instantiated (@janko) -
Make
:sizean optional argument inDown::ChunkedIO(@janko) -
Call enumerator's
ensureblock whenDown::ChunkedIO#closeis called (@janko) -
Add
:rewindableoption toDown::ChunkedIOandDown.openfor 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
:progressoption (@janko) -
Remove deprecated
:timeoutoption (@janko) -
Reraise only a subset of exceptions as
Down::NotFoundinDown.download(@janko) -
Support streaming of "Transfer-Encoding: chunked" responses in
Down.openagain (@janko) -
Remove deprecated
Down.stream(@janko)
- Remove URL from the error messages (@janko)
-
Support both Strings and
URIobjects inDown.downloadandDown.open(@olleolleolle) -
Work around a
CGI.unescapebug in Ruby 2.4. -
Apply HTTP Basic authentication contained in URLs in
Down.open. -
Raise
Down::NotFoundon 4xx and 5xx responses inDown.open. -
Write
:statusand:headersinformation toDown::ChunkedIO#datainDown.open. -
Add
#dataattribute toDown::ChunkedIOfor saving custom result data. -
Don't save retrieved chunks into the file in
Down::ChunkedIO#each_chunk. -
Add
:proxyoption toDown.downloadandDown.open.
- Show the input URL in the
Down::Errormessage.
- Don't raise
StopIterationinDown::ChunkedIOwhen:chunksis an empty Enumerator.
- Correctly detect empty filename from
Content-Dispositionheader, and in this case continue extracting filename from URL.
-
Allow
Down.opento accept request headers as options with String keys, just likeDown.downloaddoes. -
Decode URI-decoded filenames from the
Content-Dispositionheader -
Parse filenames without quotes from the
Content-Dispositionheader
- Work around
Transfer-Encoding: chunkedresponses by downloading whole response body.
- In
Down.opensend requests using the URI path instead of the full URI.
-
Read #original_filename from the "Content-Disposition" header.
-
Extract
Down::ChunkedIOinto a file, so that it can be required separately. -
In
Down.streamclose the IO after reading from it.
- Prevent reading the whole response body when the IO returned by
Down.openis closed.
- Require
net/http
-
Improve
Down::ChunkedIO(and thusDown.open):-
#each_chunkand#readnow automatically call:on_closewhen 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 -
#closecan now be called multiple times, as the:on_closewill 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)
-
-
Add
Down.openfor IO-like streaming, and deprecateDown.stream(janko-m) -
Allow URLs with basic authentication (
http://user:password@example.com) (janko-m)
-
Make Down work on Windows (martinsefcik)
-
Close an internal file descriptor that was left open (martinsefcik)
-
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_filenamebeing incomplete if filename contains a slash (janko-m)
-
Make
:progress_procand:content_length_procwork with:max_size(janko-m) -
Deprecate
:progressin favor of open-uri's:progress_proc(janko-m) -
Deprecate
:timeoutin favor of open-uri's:open_timeoutand:read_timeout(janko-m) -
Add
Down.streamfor streaming remote files in chunks (janko-m) -
Replace deprecated
URI.encodewithCGI.unescapein downloaded file's#original_filename(janko-m)
- Add error message when file was to large, and use a simple error message for other generic download failures (janko-m)
-
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)
- Forward all additional options to open-uri (janko-m)
- Move the open-uri file to the new location instead of copying it (janko-m)
- Delete the old open-uri file after using it (janko-m)
-
Fix
#downloadand#copy_to_tempfilenot preserving the file extension (janko-m) -
Fix
#copy_to_tempfilenot working when given a nested basename (janko-m)
- Fix Down not working with Ruby 1.9.3 (janko-m)
- Don't allow redirects when downloading files (janko-m)