Frustrated with current options for http downloads being insufficently robust to suprious network failure, I built my own solution on top of reqwest.
It has a few central ideas:
- do the right thing by default.
- if a network error can happen, it will happen.
- as long as progress is being made, it doesn't matter how many errors occur.
It still doesn't have a super comprehensive test suite, an thus shouldn't be used in production, mainly because every http server library i've is too good at enforcing correctness at compile time, which means intentionally writing a misbehaving http server is incredibly difficult. (mainly, I want the test server to be able to close the tcp connection mid-response, since this is an edge case that is commonly handled poorly, despite being quite common on mobile devices)