Refactor ETag handling
This commit is contained in:
parent
0a8234fdf8
commit
ae8ca2eeb3
|
@ -195,11 +195,10 @@ public class CachedResource<K, R> implements Resource<R> {
|
||||||
} catch (FileNotFoundException e) {
|
} catch (FileNotFoundException e) {
|
||||||
return fileNotFound(url, e);
|
return fileNotFound(url, e);
|
||||||
} finally {
|
} finally {
|
||||||
List<String> value = responseHeaders.get("ETag");
|
WebRequest.getETag(responseHeaders).ifPresent(etag -> {
|
||||||
if (value != null && value.size() > 0 && !value.contains(etagValue)) {
|
debug.finest(format("Store ETag: %s", etag));
|
||||||
debug.finest(format("Store ETag: %s", value));
|
etagStorage.put(etagKey, etag);
|
||||||
etagStorage.put(etagKey, value.get(0));
|
});
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
@ -45,14 +46,14 @@ import javax.xml.transform.TransformerFactory;
|
||||||
import javax.xml.transform.dom.DOMSource;
|
import javax.xml.transform.dom.DOMSource;
|
||||||
import javax.xml.transform.stream.StreamResult;
|
import javax.xml.transform.stream.StreamResult;
|
||||||
|
|
||||||
import net.filebot.util.ByteBufferOutputStream;
|
|
||||||
|
|
||||||
import org.w3c.dom.Document;
|
import org.w3c.dom.Document;
|
||||||
import org.xml.sax.InputSource;
|
import org.xml.sax.InputSource;
|
||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
import org.xml.sax.XMLReader;
|
import org.xml.sax.XMLReader;
|
||||||
import org.xml.sax.helpers.DefaultHandler;
|
import org.xml.sax.helpers.DefaultHandler;
|
||||||
|
|
||||||
|
import net.filebot.util.ByteBufferOutputStream;
|
||||||
|
|
||||||
public final class WebRequest {
|
public final class WebRequest {
|
||||||
|
|
||||||
public static Reader getReader(URLConnection connection) throws IOException {
|
public static Reader getReader(URLConnection connection) throws IOException {
|
||||||
|
@ -266,6 +267,15 @@ public final class WebRequest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Optional<String> getETag(Map<String, List<String>> responseHeaders) {
|
||||||
|
List<String> header = responseHeaders.get("ETag");
|
||||||
|
if (header != null && header.size() > 0) {
|
||||||
|
// e.g. W/"ca0072135d8a475a716e6595f577ae8b"
|
||||||
|
return Optional.of(header.get(0));
|
||||||
|
}
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
|
||||||
private static Charset getCharset(String contentType) {
|
private static Charset getCharset(String contentType) {
|
||||||
if (contentType != null) {
|
if (contentType != null) {
|
||||||
// e.g. Content-Type: text/html; charset=iso-8859-1
|
// e.g. Content-Type: text/html; charset=iso-8859-1
|
||||||
|
|
Loading…
Reference in New Issue