Skip to content

Commit 1aadb68

Browse files
fix: always use requested URL, rather than response URL (#16)
1 parent 97d0b4a commit 1aadb68

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

src/lib.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ pub use error::AsyncHttpRangeReaderError;
7272
/// if response.status() == reqwest::StatusCode::NOT_MODIFIED {
7373
/// Ok(None)
7474
/// } else {
75-
/// let reader = AsyncHttpRangeReader::from_head_response(client, response, HeaderMap::default()).await?;
75+
/// let reader = AsyncHttpRangeReader::from_head_response(client, response, url, HeaderMap::default()).await?;
7676
/// Ok(Some(reader))
7777
/// }
7878
/// }
@@ -141,7 +141,7 @@ impl AsyncHttpRangeReader {
141141
/// Construct a new `AsyncHttpRangeReader`.
142142
pub async fn new(
143143
client: impl Into<reqwest_middleware::ClientWithMiddleware>,
144-
url: reqwest::Url,
144+
url: Url,
145145
check_method: CheckSupportMethod,
146146
extra_headers: HeaderMap,
147147
) -> Result<(Self, HeaderMap), AsyncHttpRangeReaderError> {
@@ -156,15 +156,15 @@ impl AsyncHttpRangeReader {
156156
)
157157
.await?;
158158
let response_headers = response.headers().clone();
159-
let self_ = Self::from_tail_response(client, response, extra_headers).await?;
159+
let self_ = Self::from_tail_response(client, response, url, extra_headers).await?;
160160
Ok((self_, response_headers))
161161
}
162162
CheckSupportMethod::Head => {
163163
let response =
164164
Self::initial_head_request(client.clone(), url.clone(), HeaderMap::default())
165165
.await?;
166166
let response_headers = response.headers().clone();
167-
let self_ = Self::from_head_response(client, response, extra_headers).await?;
167+
let self_ = Self::from_head_response(client, response, url, extra_headers).await?;
168168
Ok((self_, response_headers))
169169
}
170170
}
@@ -200,6 +200,7 @@ impl AsyncHttpRangeReader {
200200
pub async fn from_tail_response(
201201
client: impl Into<reqwest_middleware::ClientWithMiddleware>,
202202
tail_request_response: Response,
203+
url: Url,
203204
extra_headers: HeaderMap,
204205
) -> Result<Self, AsyncHttpRangeReaderError> {
205206
let client = client.into();
@@ -245,7 +246,7 @@ impl AsyncHttpRangeReader {
245246
let (state_tx, state_rx) = watch::channel(StreamerState::default());
246247
tokio::spawn(run_streamer(
247248
client,
248-
tail_request_response.url().clone(),
249+
url,
249250
extra_headers,
250251
Some((tail_request_response, start)),
251252
memory_map,
@@ -300,6 +301,7 @@ impl AsyncHttpRangeReader {
300301
pub async fn from_head_response(
301302
client: impl Into<reqwest_middleware::ClientWithMiddleware>,
302303
head_response: Response,
304+
url: Url,
303305
extra_headers: HeaderMap,
304306
) -> Result<Self, AsyncHttpRangeReaderError> {
305307
let client = client.into();
@@ -345,7 +347,7 @@ impl AsyncHttpRangeReader {
345347
let (state_tx, state_rx) = watch::channel(StreamerState::default());
346348
tokio::spawn(run_streamer(
347349
client,
348-
head_response.url().clone(),
350+
url,
349351
extra_headers,
350352
None,
351353
memory_map,
@@ -730,7 +732,7 @@ mod test {
730732
);
731733

732734
// Prefetch the data for the metadata.json file
733-
let entry = reader.file().entries().get(0).unwrap();
735+
let entry = reader.file().entries().first().unwrap();
734736
let offset = entry.header_offset();
735737
// Get the size of the entry plus the header + size of the filename. We should also actually
736738
// include bytes for the extra fields but we don't have that information.

0 commit comments

Comments
 (0)