diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/MtgCardsRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/MtgCardsRequestHandler.java index 258707cb7..a31ad10fe 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/MtgCardsRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/MtgCardsRequestHandler.java @@ -14,7 +14,6 @@ import java.util.List; import java.util.Map; import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.CONTENT_TYPE; -import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.IF_NONE_MATCH; public class MtgCardsRequestHandler implements UriRequestHandler { private MtgCardServer _mtgCardServer; @@ -27,9 +26,10 @@ public class MtgCardsRequestHandler implements UriRequestHandler { public void handleRequest(String uri, HttpRequest request, Map context, ResponseWriter responseWriter, MessageEvent e) throws Exception { QueryStringDecoder queryDecoder = new QueryStringDecoder(request.getUri()); String provider = getQueryParameterSafely(queryDecoder, "provider"); + String updateMarker = getQueryParameterSafely(queryDecoder, "update"); if (provider != null) { - processCardListRequest(request, responseWriter, provider); + processCardListRequest(responseWriter, provider, updateMarker); } else { processProviderListRequest(responseWriter); } @@ -44,20 +44,20 @@ public class MtgCardsRequestHandler implements UriRequestHandler { responseWriter.writeByteResponse(dataProvidersResponse, headers); } - private void processCardListRequest(HttpRequest request, ResponseWriter responseWriter, String provider) { + private void processCardListRequest(ResponseWriter responseWriter, String provider, String updateMarker) { try { MtgCardServer.CardDatabaseHolder cardDatabaseHolder = _mtgCardServer.getCardDatabaseHolder(provider); if (cardDatabaseHolder == null) { responseWriter.writeError(204); return; - } else if (clientHasCurrentVersion(request, cardDatabaseHolder.getUpdateMarker())) { + } else if (updateMarker != null && updateMarker.equals(String.valueOf(cardDatabaseHolder.getUpdateDate()))) { responseWriter.writeError(304); return; } Map headers = new HashMap(); headers.put(CONTENT_TYPE, "application/json; charset=UTF-8"); - headers.put(HttpHeaders.Names.ETAG, cardDatabaseHolder.getUpdateMarker()); + headers.put(HttpHeaders.Names.ETAG, String.valueOf(cardDatabaseHolder.getUpdateDate())); responseWriter.writeByteResponse(cardDatabaseHolder.getBytes(), headers); } catch (ProviderNotFoundException exp) { @@ -65,18 +65,6 @@ public class MtgCardsRequestHandler implements UriRequestHandler { } } - private boolean clientHasCurrentVersion(HttpRequest request, String version) { - String ifNoneMatch = request.getHeader(IF_NONE_MATCH); - if (ifNoneMatch != null) { - String[] clientKnownVersions = ifNoneMatch.split(","); - for (String clientKnownVersion : clientKnownVersions) { - if (clientKnownVersion.trim().equals(version)) - return true; - } - } - return false; - } - protected String getQueryParameterSafely(QueryStringDecoder queryStringDecoder, String parameterName) { List parameterValues = queryStringDecoder.getParameters().get(parameterName); if (parameterValues != null && parameterValues.size() > 0) diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/mtg/MtgCardServer.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/mtg/MtgCardServer.java index c320c428f..2abc947ee 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/mtg/MtgCardServer.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/mtg/MtgCardServer.java @@ -49,7 +49,7 @@ public class MtgCardServer extends AbstractServer { new MtgDataProvider.UpdateCallback() { @Override public void callback(TimestampedCardCollection result) { - _providersData.put(key, new CardDatabaseHolder(marshallData(result.getSetCardDataList()), result.getUpdateMarker())); + _providersData.put(key, new CardDatabaseHolder(marshallData(result.getSetCardDataList()), result.getUpdateDate())); } }); } @@ -86,16 +86,16 @@ public class MtgCardServer extends AbstractServer { } public class CardDatabaseHolder { - private String _updateMarker; + private long _updateDate; private byte[] _bytes; - public CardDatabaseHolder(byte[] bytes, String updateMarker) { + public CardDatabaseHolder(byte[] bytes, long updateDate) { _bytes = bytes; - _updateMarker = updateMarker; + _updateDate = updateDate; } - public String getUpdateMarker() { - return _updateMarker; + public long getUpdateDate() { + return _updateDate; } public byte[] getBytes() { diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/mtg/TimestampedCardCollection.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/mtg/TimestampedCardCollection.java index c53e8fe59..6b8544bf9 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/mtg/TimestampedCardCollection.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/mtg/TimestampedCardCollection.java @@ -3,11 +3,11 @@ package com.gempukku.mtg; import java.util.List; public class TimestampedCardCollection { - private final String _updateMarker; + private final long _updateDate; private final List _setCardDataList; - public TimestampedCardCollection(String updateMarker, List setCardDataList) { - _updateMarker = updateMarker; + public TimestampedCardCollection(long updateDate, List setCardDataList) { + _updateDate = updateDate; _setCardDataList = setCardDataList; } @@ -15,7 +15,7 @@ public class TimestampedCardCollection { return _setCardDataList; } - public String getUpdateMarker() { - return _updateMarker; + public long getUpdateDate() { + return _updateDate; } } diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/mtg/provider/mtggoldfish/MtgGoldfishProvider.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/mtg/provider/mtggoldfish/MtgGoldfishProvider.java index 98d2a83ac..9e4aa54f4 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/mtg/provider/mtggoldfish/MtgGoldfishProvider.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/mtg/provider/mtggoldfish/MtgGoldfishProvider.java @@ -75,7 +75,7 @@ public class MtgGoldfishProvider implements MtgDataProvider { } private TimestampedCardCollection updateDatabase() { - String updateMarker = String.valueOf(System.currentTimeMillis()); + long updateDate = System.currentTimeMillis(); final List resultArray = new LinkedList(); try { @@ -86,7 +86,7 @@ public class MtgGoldfishProvider implements MtgDataProvider { } catch (IOException exp) { LOG.error("Unable to download card list", exp); } - return new TimestampedCardCollection(updateMarker, resultArray); + return new TimestampedCardCollection(updateDate, resultArray); } private List downloadSetListWithRetry() throws IOException {