diff --git a/src/de/schildbach/pte/BvgProvider.java b/src/de/schildbach/pte/BvgProvider.java index 202cd229..1e71d0ae 100644 --- a/src/de/schildbach/pte/BvgProvider.java +++ b/src/de/schildbach/pte/BvgProvider.java @@ -59,9 +59,13 @@ public final class BvgProvider extends AbstractHafasProvider private static final String BASE_URL = "http://mobil.bvg.de"; private static final String API_BASE = BASE_URL + "/Fahrinfo/bin/"; - public BvgProvider() + private final String additionalQueryParameter; + + public BvgProvider(final String additionalQueryParameter) { super(null, null); + + this.additionalQueryParameter = additionalQueryParameter; } public NetworkId id() @@ -78,7 +82,6 @@ public final class BvgProvider extends AbstractHafasProvider return true; } - private static final String AUTOCOMPLETE_NAME_URL = API_BASE + "stboard.bin/dox/dox?input=%s"; private static final Pattern P_SINGLE_NAME = Pattern.compile(".*?Haltestelleninfo.*?(.*?).*?input=(\\d+)&.*?", Pattern.DOTALL); private static final Pattern P_MULTI_NAME = Pattern.compile("\\s*(.*?)\\s*", Pattern.DOTALL); @@ -86,10 +89,14 @@ public final class BvgProvider extends AbstractHafasProvider @Override public List autocompleteStations(final CharSequence constraint) throws IOException { - final List results = new ArrayList(); + final StringBuilder uri = new StringBuilder(API_BASE).append("stboard.bin/dox/dox"); + uri.append("?input=").append(ParserUtils.urlEncode(constraint.toString())); + if (additionalQueryParameter != null) + uri.append('&').append(additionalQueryParameter); - final String uri = String.format(AUTOCOMPLETE_NAME_URL, ParserUtils.urlEncode(constraint.toString())); - final CharSequence page = ParserUtils.scrape(uri); + final CharSequence page = ParserUtils.scrape(uri.toString()); + + final List results = new ArrayList(); final Matcher mSingle = P_SINGLE_NAME.matcher(page); if (mSingle.matches()) @@ -271,6 +278,9 @@ public final class BvgProvider extends AbstractHafasProvider // TODO Ruftaxi wäre wohl &REQ0JourneyProduct_prod_section_0_7=1 } + if (additionalQueryParameter != null) + uri.append('&').append(additionalQueryParameter); + return uri.toString(); } @@ -627,6 +637,8 @@ public final class BvgProvider extends AbstractHafasProvider final StringBuilder uri = new StringBuilder(); uri.append(DEPARTURE_URL_LIVE); uri.append("input=").append(stationId); + if (additionalQueryParameter != null) + uri.append('&').append(additionalQueryParameter); return uri.toString(); } @@ -638,6 +650,8 @@ public final class BvgProvider extends AbstractHafasProvider uri.append(DEPARTURE_URL_PLAN); uri.append("input=").append(stationId); uri.append("&maxJourneys=").append(maxDepartures != 0 ? maxDepartures : 50); + if (additionalQueryParameter != null) + uri.append('&').append(additionalQueryParameter); return uri.toString(); } diff --git a/test/de/schildbach/pte/live/BvgProviderLiveTest.java b/test/de/schildbach/pte/live/BvgProviderLiveTest.java index 9343daba..2d0e6f81 100644 --- a/test/de/schildbach/pte/live/BvgProviderLiveTest.java +++ b/test/de/schildbach/pte/live/BvgProviderLiveTest.java @@ -35,7 +35,7 @@ import de.schildbach.pte.dto.QueryDeparturesResult; */ public class BvgProviderLiveTest { - private BvgProvider provider = new BvgProvider(); + private BvgProvider provider = new BvgProvider(null); private static final String ALL_PRODUCTS = "IRSUTBFC"; @Test