EFA: Parse serverID from <itdRequest>.

This commit is contained in:
Andreas Schildbach 2016-11-07 22:22:14 +01:00
parent a932f98099
commit a844c5bc56
5 changed files with 28 additions and 23 deletions

View file

@ -3141,6 +3141,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider {
final String serverVersion = XmlPullUtil.attr(pp, "version");
final String now = XmlPullUtil.optAttr(pp, "now", null);
final String sessionId = XmlPullUtil.attr(pp, "sessionID");
final String serverId = XmlPullUtil.attr(pp, "serverID");
final long serverTime;
if (now != null) {
@ -3152,7 +3153,8 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider {
serverTime = 0;
}
final ResultHeader header = new ResultHeader(network, SERVER_PRODUCT, serverVersion, serverTime, sessionId);
final ResultHeader header = new ResultHeader(network, SERVER_PRODUCT, serverVersion, serverId, serverTime,
sessionId);
XmlPullUtil.enter(pp, "itdRequest");
@ -3183,11 +3185,12 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider {
ParserUtils.parseEuropeanTime(serverTime, now.substring(11));
final Map<String, String> params = processPas(pp);
final String sessionId = params.get("sessionID");
final String requestId = params.get("requestID");
final String sessionId = params.get("sessionID");
final String serverId = params.get("serverID");
final ResultHeader header = new ResultHeader(network, SERVER_PRODUCT, null, serverTime.getTimeInMillis(),
new String[] { sessionId, requestId });
final ResultHeader header = new ResultHeader(network, SERVER_PRODUCT, null, serverId,
serverTime.getTimeInMillis(), new String[] { sessionId, requestId });
return header;
}

View file

@ -836,7 +836,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider {
final String headErr = head.optString("err", null);
if (headErr != null)
throw new RuntimeException(headErr);
final ResultHeader header = new ResultHeader(network, SERVER_PRODUCT, head.getString("ver"), 0, null);
final ResultHeader header = new ResultHeader(network, SERVER_PRODUCT, head.getString("ver"), null, 0, null);
final JSONArray svcResList = head.getJSONArray("svcResL");
checkState(svcResList.length() == 1);
@ -901,7 +901,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider {
final String headErr = head.optString("err", null);
if (headErr != null)
throw new RuntimeException(headErr);
final ResultHeader header = new ResultHeader(network, SERVER_PRODUCT, head.getString("ver"), 0, null);
final ResultHeader header = new ResultHeader(network, SERVER_PRODUCT, head.getString("ver"), null, 0, null);
final QueryDeparturesResult result = new QueryDeparturesResult(header);
final JSONArray svcResList = head.getJSONArray("svcResL");
@ -1000,7 +1000,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider {
final String headErr = head.optString("err", null);
if (headErr != null)
throw new RuntimeException(headErr);
final ResultHeader header = new ResultHeader(network, SERVER_PRODUCT, head.getString("ver"), 0, null);
final ResultHeader header = new ResultHeader(network, SERVER_PRODUCT, head.getString("ver"), null, 0, null);
final JSONArray svcResList = head.getJSONArray("svcResL");
checkState(svcResList.length() == 1);
@ -1092,7 +1092,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider {
final String headErr = head.optString("err", null);
if (headErr != null)
throw new RuntimeException(headErr);
final ResultHeader header = new ResultHeader(network, SERVER_PRODUCT, head.getString("ver"), 0, null);
final ResultHeader header = new ResultHeader(network, SERVER_PRODUCT, head.getString("ver"), null, 0, null);
final JSONArray svcResList = head.getJSONArray("svcResL");
checkState(svcResList.length() == 1);
@ -1516,7 +1516,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider {
XmlPullUtil.require(pp, "ResC");
final String product = XmlPullUtil.attr(pp, "prod").split(" ")[0];
final ResultHeader header = new ResultHeader(network, SERVER_PRODUCT, product, 0, null);
final ResultHeader header = new ResultHeader(network, SERVER_PRODUCT, product, null, 0, null);
XmlPullUtil.enter(pp, "ResC");
if (XmlPullUtil.test(pp, "Err")) {
@ -2168,8 +2168,8 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider {
final int version = is.readShortReverse();
if (version != 6 && version != 5)
throw new IllegalStateException("unknown version: " + version + ", first chars: " + bodyPeek);
final ResultHeader header = new ResultHeader(network, SERVER_PRODUCT, Integer.toString(version), 0,
null);
final ResultHeader header = new ResultHeader(network, SERVER_PRODUCT, Integer.toString(version), null,
0, null);
// quick seek for pointers
is.reset();

View file

@ -668,7 +668,7 @@ public abstract class AbstractNavitiaProvider extends AbstractNetworkProvider {
@Override
public NearbyLocationsResult queryNearbyLocations(final EnumSet<LocationType> types, final Location location,
int maxDistance, final int maxLocations) throws IOException {
final ResultHeader resultHeader = new ResultHeader(network, SERVER_PRODUCT, SERVER_VERSION, 0, null);
final ResultHeader resultHeader = new ResultHeader(network, SERVER_PRODUCT, SERVER_VERSION, null, 0, null);
// Build query uri depending of location type.
final StringBuilder queryUri = new StringBuilder(uri());
@ -739,7 +739,7 @@ public abstract class AbstractNavitiaProvider extends AbstractNetworkProvider {
final int maxDepartures, final boolean equivs) throws IOException {
checkNotNull(Strings.emptyToNull(stationId));
final ResultHeader resultHeader = new ResultHeader(network, SERVER_PRODUCT, SERVER_VERSION, 0, null);
final ResultHeader resultHeader = new ResultHeader(network, SERVER_PRODUCT, SERVER_VERSION, null, 0, null);
try {
final QueryDeparturesResult result = new QueryDeparturesResult(resultHeader,
@ -863,7 +863,7 @@ public abstract class AbstractNavitiaProvider extends AbstractNetworkProvider {
}
}
final ResultHeader resultHeader = new ResultHeader(network, SERVER_PRODUCT, SERVER_VERSION, 0, null);
final ResultHeader resultHeader = new ResultHeader(network, SERVER_PRODUCT, SERVER_VERSION, null, 0, null);
return new SuggestLocationsResult(resultHeader, locations);
} catch (final JSONException jsonExc) {
throw new ParserException(jsonExc);
@ -875,7 +875,7 @@ public abstract class AbstractNavitiaProvider extends AbstractNetworkProvider {
final Date date, final boolean dep, final @Nullable Set<Product> products,
final @Nullable Optimize optimize, final @Nullable WalkSpeed walkSpeed,
final @Nullable Accessibility accessibility, final @Nullable Set<Option> options) throws IOException {
final ResultHeader resultHeader = new ResultHeader(network, SERVER_PRODUCT, SERVER_VERSION, 0, null);
final ResultHeader resultHeader = new ResultHeader(network, SERVER_PRODUCT, SERVER_VERSION, null, 0, null);
try {
if (from != null && from.isIdentified() && to != null && to.isIdentified()) {
@ -1044,7 +1044,7 @@ public abstract class AbstractNavitiaProvider extends AbstractNetworkProvider {
@Override
public QueryTripsResult queryMoreTrips(final QueryTripsContext contextObj, final boolean later) throws IOException {
final ResultHeader resultHeader = new ResultHeader(network, SERVER_PRODUCT, SERVER_VERSION, 0, null);
final ResultHeader resultHeader = new ResultHeader(network, SERVER_PRODUCT, SERVER_VERSION, null, 0, null);
final Context context = (Context) contextObj;
final Location from = context.from;

View file

@ -380,8 +380,7 @@ public class VrsProvider extends AbstractNetworkProvider {
final String error = Strings.emptyToNull(head.optString("error", "").trim());
if (error != null) {
if (error.equals("Leere Koordinate.") || error.equals("Leere ASS-ID und leere Koordinate"))
return new NearbyLocationsResult(new ResultHeader(NetworkId.VRS, SERVER_PRODUCT, null, 0, null),
locations);
return new NearbyLocationsResult(new ResultHeader(NetworkId.VRS, SERVER_PRODUCT), locations);
else if (error.equals("ASS2-Server lieferte leere Antwort."))
return new NearbyLocationsResult(new ResultHeader(NetworkId.VRS, SERVER_PRODUCT),
NearbyLocationsResult.Status.SERVICE_DOWN);
@ -403,7 +402,7 @@ public class VrsProvider extends AbstractNetworkProvider {
}
serverTime = parseDateTime(timetable.getJSONObject(i).getString("generated")).getTime();
}
final ResultHeader header = new ResultHeader(NetworkId.VRS, SERVER_PRODUCT, null, serverTime, null);
final ResultHeader header = new ResultHeader(NetworkId.VRS, SERVER_PRODUCT, null, null, serverTime, null);
return new NearbyLocationsResult(header, locations);
} catch (final JSONException x) {
throw new RuntimeException("cannot parse: '" + page + "' on " + uri, x);
@ -871,7 +870,7 @@ public class VrsProvider extends AbstractNetworkProvider {
changes));
}
long serverTime = parseDateTime(head.getString("generated")).getTime();
final ResultHeader header = new ResultHeader(NetworkId.VRS, SERVER_PRODUCT, null, serverTime, null);
final ResultHeader header = new ResultHeader(NetworkId.VRS, SERVER_PRODUCT, null, null, serverTime, null);
context.from = from;
context.to = to;
context.via = via;

View file

@ -35,18 +35,20 @@ public final class ResultHeader implements Serializable {
public final NetworkId network;
public final String serverProduct;
public final @Nullable String serverVersion;
public final @Nullable String serverName;
public final long serverTime;
public final Object context;
public ResultHeader(final NetworkId network, final String serverProduct) {
this(network, serverProduct, null, 0, null);
this(network, serverProduct, null, null, 0, null);
}
public ResultHeader(final NetworkId network, final String serverProduct, final String serverVersion,
final long serverTime, final Object context) {
final String serverName, final long serverTime, final Object context) {
this.network = checkNotNull(network);
this.serverProduct = checkNotNull(serverProduct);
this.serverVersion = serverVersion;
this.serverName = serverName;
this.serverTime = serverTime;
this.context = context;
}
@ -54,6 +56,7 @@ public final class ResultHeader implements Serializable {
@Override
public String toString() {
return MoreObjects.toStringHelper(this).add("serverProduct", serverProduct).add("serverVersion", serverVersion)
.add("serverTime", serverTime).add("context", context).omitNullValues().toString();
.add("serverName", serverName).add("serverTime", serverTime).add("context", context).omitNullValues()
.toString();
}
}