mirror of
https://gitlab.com/oeffi/public-transport-enabler.git
synced 2025-07-19 00:39:58 +00:00
adapt to api change of Vienna
This commit is contained in:
parent
a35618e018
commit
a935fe19ef
3 changed files with 101 additions and 62 deletions
|
@ -93,7 +93,8 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
||||||
private final boolean needsSpEncId;
|
private final boolean needsSpEncId;
|
||||||
private boolean includeRegionId = true;
|
private boolean includeRegionId = true;
|
||||||
private Charset requestUrlEncoding = ISO_8859_1;
|
private Charset requestUrlEncoding = ISO_8859_1;
|
||||||
private String referer;
|
private String httpReferer;
|
||||||
|
private boolean httpPost = false;
|
||||||
private boolean suppressPositions = false;
|
private boolean suppressPositions = false;
|
||||||
private boolean useRouteIndexAsConnectionId = true;
|
private boolean useRouteIndexAsConnectionId = true;
|
||||||
private final XmlPullParserFactory parserFactory;
|
private final XmlPullParserFactory parserFactory;
|
||||||
|
@ -177,9 +178,14 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
||||||
this.requestUrlEncoding = requestUrlEncoding;
|
this.requestUrlEncoding = requestUrlEncoding;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setReferer(final String referer)
|
protected void setHttpReferer(final String httpReferer)
|
||||||
{
|
{
|
||||||
this.referer = referer;
|
this.httpReferer = httpReferer;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setHttpPost(final boolean httpPost)
|
||||||
|
{
|
||||||
|
this.httpPost = httpPost;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setIncludeRegionId(final boolean includeRegionId)
|
protected void setIncludeRegionId(final boolean includeRegionId)
|
||||||
|
@ -212,20 +218,25 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
||||||
|
|
||||||
protected List<Location> jsonStopfinderRequest(final Location constraint) throws IOException
|
protected List<Location> jsonStopfinderRequest(final Location constraint) throws IOException
|
||||||
{
|
{
|
||||||
final StringBuilder uri = new StringBuilder(stopFinderEndpoint);
|
final StringBuilder parameters = new StringBuilder();
|
||||||
appendCommonRequestParams(uri, "JSON");
|
appendCommonRequestParams(parameters, "JSON");
|
||||||
uri.append("&locationServerActive=1");
|
parameters.append("&locationServerActive=1");
|
||||||
if (includeRegionId)
|
if (includeRegionId)
|
||||||
uri.append("®ionID_sf=1"); // prefer own region
|
parameters.append("®ionID_sf=1"); // prefer own region
|
||||||
appendLocation(uri, constraint, "sf");
|
appendLocation(parameters, constraint, "sf");
|
||||||
if (constraint.type == LocationType.ANY)
|
if (constraint.type == LocationType.ANY)
|
||||||
// 1=place 2=stop 4=street 8=address 16=crossing 32=poi 64=postcode
|
// 1=place 2=stop 4=street 8=address 16=crossing 32=poi 64=postcode
|
||||||
uri.append("&anyObjFilter_sf=").append(2 + 4 + 8 + 16 + 32 + 64);
|
parameters.append("&anyObjFilter_sf=").append(2 + 4 + 8 + 16 + 32 + 64);
|
||||||
uri.append("&anyMaxSizeHitList=500");
|
parameters.append("&anyMaxSizeHitList=500");
|
||||||
|
|
||||||
// System.out.println(uri.toString());
|
final StringBuilder uri = new StringBuilder(stopFinderEndpoint);
|
||||||
|
if (!httpPost)
|
||||||
|
uri.append(parameters);
|
||||||
|
|
||||||
final CharSequence page = ParserUtils.scrape(uri.toString(), null, UTF_8, null);
|
// System.out.println(uri);
|
||||||
|
// System.out.println(parameters);
|
||||||
|
|
||||||
|
final CharSequence page = ParserUtils.scrape(uri.toString(), httpPost ? parameters.substring(1) : null, UTF_8, null);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -308,28 +319,33 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
||||||
|
|
||||||
protected List<Location> xmlStopfinderRequest(final Location constraint) throws IOException
|
protected List<Location> xmlStopfinderRequest(final Location constraint) throws IOException
|
||||||
{
|
{
|
||||||
final StringBuilder uri = new StringBuilder(stopFinderEndpoint);
|
final StringBuilder parameters = new StringBuilder();
|
||||||
appendCommonRequestParams(uri, "XML");
|
appendCommonRequestParams(parameters, "XML");
|
||||||
uri.append("&locationServerActive=1");
|
parameters.append("&locationServerActive=1");
|
||||||
if (includeRegionId)
|
if (includeRegionId)
|
||||||
uri.append("®ionID_sf=1"); // prefer own region
|
parameters.append("®ionID_sf=1"); // prefer own region
|
||||||
appendLocation(uri, constraint, "sf");
|
appendLocation(parameters, constraint, "sf");
|
||||||
if (constraint.type == LocationType.ANY)
|
if (constraint.type == LocationType.ANY)
|
||||||
{
|
{
|
||||||
if (needsSpEncId)
|
if (needsSpEncId)
|
||||||
uri.append("&SpEncId=0");
|
parameters.append("&SpEncId=0");
|
||||||
// 1=place 2=stop 4=street 8=address 16=crossing 32=poi 64=postcode
|
// 1=place 2=stop 4=street 8=address 16=crossing 32=poi 64=postcode
|
||||||
uri.append("&anyObjFilter_sf=").append(2 + 4 + 8 + 16 + 32 + 64);
|
parameters.append("&anyObjFilter_sf=").append(2 + 4 + 8 + 16 + 32 + 64);
|
||||||
uri.append("&reducedAnyPostcodeObjFilter_sf=64&reducedAnyTooManyObjFilter_sf=2");
|
parameters.append("&reducedAnyPostcodeObjFilter_sf=64&reducedAnyTooManyObjFilter_sf=2");
|
||||||
uri.append("&useHouseNumberList=true");
|
parameters.append("&useHouseNumberList=true");
|
||||||
}
|
}
|
||||||
|
|
||||||
// System.out.println(uri.toString());
|
final StringBuilder uri = new StringBuilder(stopFinderEndpoint);
|
||||||
|
if (!httpPost)
|
||||||
|
uri.append(parameters);
|
||||||
|
|
||||||
|
// System.out.println(uri);
|
||||||
|
// System.out.println(parameters);
|
||||||
|
|
||||||
InputStream is = null;
|
InputStream is = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
is = ParserUtils.scrapeInputStream(uri.toString());
|
is = ParserUtils.scrapeInputStream(uri.toString(), httpPost ? parameters.substring(1) : null, null, httpReferer, null, 3);
|
||||||
|
|
||||||
final XmlPullParser pp = parserFactory.newPullParser();
|
final XmlPullParser pp = parserFactory.newPullParser();
|
||||||
pp.setInput(is, null);
|
pp.setInput(is, null);
|
||||||
|
@ -389,20 +405,25 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
||||||
|
|
||||||
protected NearbyStationsResult xmlCoordRequest(final int lat, final int lon, final int maxDistance, final int maxStations) throws IOException
|
protected NearbyStationsResult xmlCoordRequest(final int lat, final int lon, final int maxDistance, final int maxStations) throws IOException
|
||||||
{
|
{
|
||||||
|
final StringBuilder parameters = new StringBuilder();
|
||||||
|
appendCommonRequestParams(parameters, "XML");
|
||||||
|
parameters.append("&coord=").append(String.format(Locale.ENGLISH, "%2.6f:%2.6f:WGS84", latLonToDouble(lon), latLonToDouble(lat)));
|
||||||
|
parameters.append("&coordListOutputFormat=STRING");
|
||||||
|
parameters.append("&max=").append(maxStations != 0 ? maxStations : 50);
|
||||||
|
parameters.append("&inclFilter=1&radius_1=").append(maxDistance != 0 ? maxDistance : 1320);
|
||||||
|
parameters.append("&type_1=STOP"); // ENTRANCE, BUS_POINT, POI_POINT
|
||||||
|
|
||||||
final StringBuilder uri = new StringBuilder(coordEndpoint);
|
final StringBuilder uri = new StringBuilder(coordEndpoint);
|
||||||
appendCommonRequestParams(uri, "XML");
|
if (!httpPost)
|
||||||
uri.append("&coord=").append(String.format(Locale.ENGLISH, "%2.6f:%2.6f:WGS84", latLonToDouble(lon), latLonToDouble(lat)));
|
uri.append(parameters);
|
||||||
uri.append("&coordListOutputFormat=STRING");
|
|
||||||
uri.append("&max=").append(maxStations != 0 ? maxStations : 50);
|
|
||||||
uri.append("&inclFilter=1&radius_1=").append(maxDistance != 0 ? maxDistance : 1320);
|
|
||||||
uri.append("&type_1=STOP"); // ENTRANCE, BUS_POINT, POI_POINT
|
|
||||||
|
|
||||||
// System.out.println(uri);
|
// System.out.println(uri);
|
||||||
|
// System.out.println(parameters);
|
||||||
|
|
||||||
InputStream is = null;
|
InputStream is = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
is = ParserUtils.scrapeInputStream(uri.toString());
|
is = ParserUtils.scrapeInputStream(uri.toString(), httpPost ? parameters.substring(1) : null, null, httpReferer, null, 3);
|
||||||
|
|
||||||
final XmlPullParser pp = parserFactory.newPullParser();
|
final XmlPullParser pp = parserFactory.newPullParser();
|
||||||
pp.setInput(is, null);
|
pp.setInput(is, null);
|
||||||
|
@ -592,22 +613,27 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
||||||
|
|
||||||
private NearbyStationsResult nearbyStationsRequest(final int stationId, final int maxStations) throws IOException
|
private NearbyStationsResult nearbyStationsRequest(final int stationId, final int maxStations) throws IOException
|
||||||
{
|
{
|
||||||
|
final StringBuilder parameters = new StringBuilder();
|
||||||
|
appendCommonRequestParams(parameters, "XML");
|
||||||
|
parameters.append("&type_dm=stop&name_dm=").append(stationId);
|
||||||
|
parameters.append("&itOptionsActive=1");
|
||||||
|
parameters.append("&ptOptionsActive=1");
|
||||||
|
parameters.append("&useProxFootSearch=1");
|
||||||
|
parameters.append("&mergeDep=1");
|
||||||
|
parameters.append("&useAllStops=1");
|
||||||
|
parameters.append("&mode=direct");
|
||||||
|
|
||||||
final StringBuilder uri = new StringBuilder(departureMonitorEndpoint);
|
final StringBuilder uri = new StringBuilder(departureMonitorEndpoint);
|
||||||
appendCommonRequestParams(uri, "XML");
|
if (!httpPost)
|
||||||
uri.append("&type_dm=stop&name_dm=").append(stationId);
|
uri.append(parameters);
|
||||||
uri.append("&itOptionsActive=1");
|
|
||||||
uri.append("&ptOptionsActive=1");
|
|
||||||
uri.append("&useProxFootSearch=1");
|
|
||||||
uri.append("&mergeDep=1");
|
|
||||||
uri.append("&useAllStops=1");
|
|
||||||
uri.append("&mode=direct");
|
|
||||||
|
|
||||||
// System.out.println(uri);
|
// System.out.println(uri);
|
||||||
|
// System.out.println(parameters);
|
||||||
|
|
||||||
InputStream is = null;
|
InputStream is = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
is = ParserUtils.scrapeInputStream(uri.toString());
|
is = ParserUtils.scrapeInputStream(uri.toString(), httpPost ? parameters.substring(1) : null, null, httpReferer, "NSC_", 3);
|
||||||
|
|
||||||
final XmlPullParser pp = parserFactory.newPullParser();
|
final XmlPullParser pp = parserFactory.newPullParser();
|
||||||
pp.setInput(is, null);
|
pp.setInput(is, null);
|
||||||
|
@ -1386,24 +1412,29 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
||||||
|
|
||||||
public QueryDeparturesResult queryDepartures(final int stationId, final int maxDepartures, final boolean equivs) throws IOException
|
public QueryDeparturesResult queryDepartures(final int stationId, final int maxDepartures, final boolean equivs) throws IOException
|
||||||
{
|
{
|
||||||
final StringBuilder uri = new StringBuilder(departureMonitorEndpoint);
|
final StringBuilder parameters = new StringBuilder();
|
||||||
appendCommonRequestParams(uri, "XML");
|
appendCommonRequestParams(parameters, "XML");
|
||||||
uri.append("&type_dm=stop");
|
parameters.append("&type_dm=stop");
|
||||||
uri.append("&name_dm=").append(stationId);
|
parameters.append("&name_dm=").append(stationId);
|
||||||
uri.append("&useRealtime=1");
|
parameters.append("&useRealtime=1");
|
||||||
uri.append("&mode=direct");
|
parameters.append("&mode=direct");
|
||||||
uri.append("&ptOptionsActive=1");
|
parameters.append("&ptOptionsActive=1");
|
||||||
uri.append("&deleteAssignedStops_dm=").append(equivs ? '0' : '1');
|
parameters.append("&deleteAssignedStops_dm=").append(equivs ? '0' : '1');
|
||||||
uri.append("&mergeDep=1"); // merge departures
|
parameters.append("&mergeDep=1"); // merge departures
|
||||||
if (maxDepartures > 0)
|
if (maxDepartures > 0)
|
||||||
uri.append("&limit=").append(maxDepartures);
|
parameters.append("&limit=").append(maxDepartures);
|
||||||
|
|
||||||
|
final StringBuilder uri = new StringBuilder(departureMonitorEndpoint);
|
||||||
|
if (!httpPost)
|
||||||
|
uri.append(parameters);
|
||||||
|
|
||||||
// System.out.println(uri);
|
// System.out.println(uri);
|
||||||
|
// System.out.println(parameters);
|
||||||
|
|
||||||
InputStream is = null;
|
InputStream is = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
is = ParserUtils.scrapeInputStream(uri.toString(), null, null, referer, null, 3);
|
is = ParserUtils.scrapeInputStream(uri.toString(), httpPost ? parameters.substring(1) : null, null, httpReferer, null, 3);
|
||||||
|
|
||||||
final XmlPullParser pp = parserFactory.newPullParser();
|
final XmlPullParser pp = parserFactory.newPullParser();
|
||||||
pp.setInput(is, null);
|
pp.setInput(is, null);
|
||||||
|
@ -1731,13 +1762,13 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
||||||
return (double) value / 1000000;
|
return (double) value / 1000000;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String xsltTripRequest2Uri(final Location from, final Location via, final Location to, final Date date, final boolean dep,
|
protected String xsltTripRequestParameters(final Location from, final Location via, final Location to, final Date date, final boolean dep,
|
||||||
final int numConnections, final String products, final WalkSpeed walkSpeed, final Accessibility accessibility, final Set<Option> options)
|
final int numConnections, final String products, final WalkSpeed walkSpeed, final Accessibility accessibility, final Set<Option> options)
|
||||||
{
|
{
|
||||||
final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMdd", Locale.US);
|
final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMdd", Locale.US);
|
||||||
final DateFormat TIME_FORMAT = new SimpleDateFormat("HHmm", Locale.US);
|
final DateFormat TIME_FORMAT = new SimpleDateFormat("HHmm", Locale.US);
|
||||||
|
|
||||||
final StringBuilder uri = new StringBuilder(tripEndpoint);
|
final StringBuilder uri = new StringBuilder();
|
||||||
appendCommonRequestParams(uri, "XML");
|
appendCommonRequestParams(uri, "XML");
|
||||||
|
|
||||||
uri.append("&sessionID=0");
|
uri.append("&sessionID=0");
|
||||||
|
@ -1841,13 +1872,21 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
||||||
final int numConnections, final String products, final WalkSpeed walkSpeed, final Accessibility accessibility, final Set<Option> options)
|
final int numConnections, final String products, final WalkSpeed walkSpeed, final Accessibility accessibility, final Set<Option> options)
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
final String uri = xsltTripRequest2Uri(from, via, to, date, dep, numConnections, products, walkSpeed, accessibility, options);
|
|
||||||
|
final String parameters = xsltTripRequestParameters(from, via, to, date, dep, numConnections, products, walkSpeed, accessibility, options);
|
||||||
|
|
||||||
|
final StringBuilder uri = new StringBuilder(tripEndpoint);
|
||||||
|
if (!httpPost)
|
||||||
|
uri.append(parameters);
|
||||||
|
|
||||||
|
// System.out.println(uri);
|
||||||
|
// System.out.println(parameters);
|
||||||
|
|
||||||
InputStream is = null;
|
InputStream is = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
is = ParserUtils.scrapeInputStream(uri, null, null, referer, "NSC_", 3);
|
is = ParserUtils.scrapeInputStream(uri.toString(), httpPost ? parameters.substring(1) : null, null, httpReferer, "NSC_", 3);
|
||||||
return queryConnections(uri, is);
|
return queryConnections(uri.toString(), is);
|
||||||
}
|
}
|
||||||
catch (final XmlPullParserException x)
|
catch (final XmlPullParserException x)
|
||||||
{
|
{
|
||||||
|
@ -1877,7 +1916,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
||||||
InputStream is = null;
|
InputStream is = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
is = new BufferedInputStream(ParserUtils.scrapeInputStream(uri.toString(), null, null, referer, "NSC_", 3));
|
is = new BufferedInputStream(ParserUtils.scrapeInputStream(uri.toString(), null, null, httpReferer, "NSC_", 3));
|
||||||
is.mark(512);
|
is.mark(512);
|
||||||
|
|
||||||
return queryConnections(uri.toString(), is);
|
return queryConnections(uri.toString(), is);
|
||||||
|
|
|
@ -51,10 +51,10 @@ public class VgnProvider extends AbstractEfaProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String xsltTripRequest2Uri(final Location from, final Location via, final Location to, final Date date, final boolean dep,
|
protected String xsltTripRequestParameters(final Location from, final Location via, final Location to, final Date date, final boolean dep,
|
||||||
final int numConnections, final String products, final WalkSpeed walkSpeed, final Accessibility accessibility, final Set<Option> options)
|
final int numConnections, final String products, final WalkSpeed walkSpeed, final Accessibility accessibility, final Set<Option> options)
|
||||||
{
|
{
|
||||||
return super.xsltTripRequest2Uri(from, via, to, date, dep, numConnections, products, walkSpeed, accessibility, options)
|
return super.xsltTripRequestParameters(from, via, to, date, dep, numConnections, products, walkSpeed, accessibility, options)
|
||||||
+ "&itdLPxx_showTariffLevel=1";
|
+ "&itdLPxx_showTariffLevel=1";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,14 +28,14 @@ import de.schildbach.pte.dto.Style;
|
||||||
public class VorProvider extends AbstractEfaProvider
|
public class VorProvider extends AbstractEfaProvider
|
||||||
{
|
{
|
||||||
public static final NetworkId NETWORK_ID = NetworkId.VOR;
|
public static final NetworkId NETWORK_ID = NetworkId.VOR;
|
||||||
private final static String EFA_API_BASE = "http://efa.vor.at/wvb/";
|
private final static String API_BASE = "http://efa.vor.at/wvb/";
|
||||||
private final static String RBL_API_BASE = "http://depmon.vor.at:8380/vorrbl/";
|
|
||||||
|
|
||||||
public VorProvider()
|
public VorProvider()
|
||||||
{
|
{
|
||||||
super(RBL_API_BASE + DEFAULT_DEPARTURE_MONITOR_ENDPOINT, EFA_API_BASE + DEFAULT_TRIP_ENDPOINT, EFA_API_BASE + DEFAULT_STOPFINDER_ENDPOINT,
|
super(API_BASE, null);
|
||||||
RBL_API_BASE + DEFAULT_COORD_ENDPOINT, null, false, false);
|
|
||||||
|
|
||||||
|
setHttpReferer(API_BASE + DEFAULT_DEPARTURE_MONITOR_ENDPOINT);
|
||||||
|
setHttpPost(true);
|
||||||
setIncludeRegionId(false);
|
setIncludeRegionId(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue