We change the return value so that it returns
a ReadSeekCloser, opening the way for
having state inside the returned reader.
We also change it to ensure that the read
fails if the content changes underfoot,
so we can rely on the length remaining the same.
We also tidy up the live tests a little and fix a failure
(they now pass), and change the Swift test server
so that it deals with etags and If-Match headers
correctly by using http.ServeContent.
We change the return value so that it returns a ReadSeekCloser, opening the way for having state inside the returned reader.
We also change it to ensure that the read fails if the content changes underfoot, so we can rely on the length remaining the same.
We also tidy up the live tests a little and fix a failure (they now pass), and change the Swift test server so that it deals with etags and If-Match headers correctly by using http.ServeContent.