Commit 407dbf07 by olly Committed by Oliver Woodman

Add HttpDataSource.getResponseCode to provide the status code associated with…

Add HttpDataSource.getResponseCode to provide the status code associated with the most recent HTTP response.

PiperOrigin-RevId: 266218104
parent ad699b8f
...@@ -11,6 +11,8 @@ ...@@ -11,6 +11,8 @@
quality video can be loaded up to the full default buffer duration. quality video can be loaded up to the full default buffer duration.
* Fix audio selection issue where languages are compared by bit rate * Fix audio selection issue where languages are compared by bit rate
([#6335](https://github.com/google/ExoPlayer/issues/6335)). ([#6335](https://github.com/google/ExoPlayer/issues/6335)).
* Add `HttpDataSource.getResponseCode` to provide the status code associated
with the most recent HTTP response.
### 2.10.4 ### ### 2.10.4 ###
......
...@@ -300,6 +300,13 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource { ...@@ -300,6 +300,13 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
} }
@Override @Override
public int getResponseCode() {
return responseInfo == null || responseInfo.getHttpStatusCode() <= 0
? -1
: responseInfo.getHttpStatusCode();
}
@Override
public Map<String, List<String>> getResponseHeaders() { public Map<String, List<String>> getResponseHeaders() {
return responseInfo == null ? Collections.emptyMap() : responseInfo.getAllHeaders(); return responseInfo == null ? Collections.emptyMap() : responseInfo.getAllHeaders();
} }
......
...@@ -134,6 +134,11 @@ public class OkHttpDataSource extends BaseDataSource implements HttpDataSource { ...@@ -134,6 +134,11 @@ public class OkHttpDataSource extends BaseDataSource implements HttpDataSource {
} }
@Override @Override
public int getResponseCode() {
return response == null ? -1 : response.code();
}
@Override
public Map<String, List<String>> getResponseHeaders() { public Map<String, List<String>> getResponseHeaders() {
return response == null ? Collections.emptyMap() : response.headers().toMultimap(); return response == null ? Collections.emptyMap() : response.headers().toMultimap();
} }
......
...@@ -82,6 +82,7 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou ...@@ -82,6 +82,7 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
private @Nullable HttpURLConnection connection; private @Nullable HttpURLConnection connection;
private @Nullable InputStream inputStream; private @Nullable InputStream inputStream;
private boolean opened; private boolean opened;
private int responseCode;
private long bytesToSkip; private long bytesToSkip;
private long bytesToRead; private long bytesToRead;
...@@ -253,6 +254,11 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou ...@@ -253,6 +254,11 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
} }
@Override @Override
public int getResponseCode() {
return connection == null || responseCode <= 0 ? -1 : responseCode;
}
@Override
public Map<String, List<String>> getResponseHeaders() { public Map<String, List<String>> getResponseHeaders() {
return connection == null ? Collections.emptyMap() : connection.getHeaderFields(); return connection == null ? Collections.emptyMap() : connection.getHeaderFields();
} }
...@@ -288,7 +294,6 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou ...@@ -288,7 +294,6 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
dataSpec, HttpDataSourceException.TYPE_OPEN); dataSpec, HttpDataSourceException.TYPE_OPEN);
} }
int responseCode;
String responseMessage; String responseMessage;
try { try {
responseCode = connection.getResponseCode(); responseCode = connection.getResponseCode();
......
...@@ -354,6 +354,12 @@ public interface HttpDataSource extends DataSource { ...@@ -354,6 +354,12 @@ public interface HttpDataSource extends DataSource {
*/ */
void clearAllRequestProperties(); void clearAllRequestProperties();
/**
* When the source is open, returns the HTTP response status code associated with the last {@link
* #open} call. Otherwise, returns a negative value.
*/
int getResponseCode();
@Override @Override
Map<String, List<String>> getResponseHeaders(); Map<String, List<String>> getResponseHeaders();
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment