diff --git a/src/de/schildbach/pte/NetworkId.java b/src/de/schildbach/pte/NetworkId.java
index 0e4d45d4..5a7004f9 100644
--- a/src/de/schildbach/pte/NetworkId.java
+++ b/src/de/schildbach/pte/NetworkId.java
@@ -67,7 +67,7 @@ public enum NetworkId {
TFI, EIREANN,
// Poland
- PLNAVITIA,
+ PL, PLNAVITIA,
// Italy
IT,
diff --git a/src/de/schildbach/pte/PlProvider.java b/src/de/schildbach/pte/PlProvider.java
new file mode 100644
index 00000000..1708d813
--- /dev/null
+++ b/src/de/schildbach/pte/PlProvider.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright the original author or authors.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.schildbach.pte;
+
+import java.util.Set;
+
+import com.google.common.base.Charsets;
+
+import de.schildbach.pte.dto.Product;
+import de.schildbach.pte.util.StringReplaceReader;
+
+import okhttp3.HttpUrl;
+
+/**
+ * @author Andreas Schildbach
+ */
+public class PlProvider extends AbstractHafasClientInterfaceProvider {
+ private static final HttpUrl API_BASE = HttpUrl.parse("https://mobil.rozklad-pkp.pl:8019/bin/");
+ private static final Product[] PRODUCTS_MAP = { Product.HIGH_SPEED_TRAIN, // High speed trains from other
+ // countries
+ Product.HIGH_SPEED_TRAIN, // EIP, EIC, EC and international equivalents
+ Product.HIGH_SPEED_TRAIN, // IC, TLK, IR and international equivalents
+ Product.REGIONAL_TRAIN, // R (Regio), Os (Osobowy) and other regional and suburban trains
+ Product.BUS, Product.BUS, Product.FERRY };
+ private static final String DEFAULT_API_CLIENT = "{\"id\":\"HAFAS\",\"type\":\"AND\"}";
+
+ public PlProvider(final String apiAuthorization) {
+ this(DEFAULT_API_CLIENT, apiAuthorization);
+ }
+
+ public PlProvider(final String apiClient, final String apiAuthorization) {
+ super(NetworkId.PL, API_BASE, PRODUCTS_MAP);
+ setApiVersion("1.21");
+ setApiClient(apiClient);
+ setApiAuthorization(apiAuthorization);
+ setSessionCookieName("SERVERID");
+ }
+
+ private static final String[] PLACES = { "Warszawa", "Kraków" };
+
+ @Override
+ protected String[] splitStationName(final String name) {
+ for (final String place : PLACES) {
+ if (name.endsWith(", " + place))
+ return new String[] { place, name.substring(0, name.length() - place.length() - 2) };
+ if (name.startsWith(place + " ") || name.startsWith(place + "-"))
+ return new String[] { place, name.substring(place.length() + 1) };
+ }
+
+ return super.splitStationName(name);
+ }
+
+ @Override
+ public Set defaultProducts() {
+ return Product.ALL;
+ }
+}
diff --git a/test/de/schildbach/pte/live/PlProviderLiveTest.java b/test/de/schildbach/pte/live/PlProviderLiveTest.java
new file mode 100644
index 00000000..f3191654
--- /dev/null
+++ b/test/de/schildbach/pte/live/PlProviderLiveTest.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright the original author or authors.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.schildbach.pte.live;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Date;
+
+import org.junit.Test;
+
+import de.schildbach.pte.PlProvider;
+import de.schildbach.pte.dto.Location;
+import de.schildbach.pte.dto.LocationType;
+import de.schildbach.pte.dto.NearbyLocationsResult;
+import de.schildbach.pte.dto.QueryDeparturesResult;
+import de.schildbach.pte.dto.QueryTripsResult;
+import de.schildbach.pte.dto.SuggestLocationsResult;
+
+/**
+ * @author Andreas Schildbach
+ */
+public class PlProviderLiveTest extends AbstractProviderLiveTest {
+ public PlProviderLiveTest() {
+ super(new PlProvider(secretProperty("pl.api_authorization")));
+ }
+
+ @Test
+ public void nearbyStations() throws Exception {
+ final NearbyLocationsResult result = queryNearbyStations(new Location(LocationType.STATION, "5100065"));
+ print(result);
+ }
+
+ @Test
+ public void nearbyStationsByCoordinate() throws Exception {
+ final NearbyLocationsResult result = queryNearbyStations(Location.coord(52227027, 20989795));
+ print(result);
+ }
+
+ @Test
+ public void queryDepartures() throws Exception {
+ final QueryDeparturesResult result = queryDepartures("5100065", false);
+ print(result);
+ }
+
+ @Test
+ public void queryDeparturesInvalidStation() throws Exception {
+ final QueryDeparturesResult result = queryDepartures("999999", false);
+ assertEquals(QueryDeparturesResult.Status.INVALID_STATION, result.status);
+ }
+
+ @Test
+ public void suggestLocations() throws Exception {
+ final SuggestLocationsResult result = suggestLocations("Warszawa");
+ print(result);
+ }
+
+ @Test
+ public void suggestLocationsUmlaut() throws Exception {
+ final SuggestLocationsResult result = suggestLocations("Służewiec");
+ print(result);
+ }
+
+ @Test
+ public void shortTrip() throws Exception {
+ final QueryTripsResult result = queryTrips(new Location(LocationType.STATION, "5196001", null, "KRAKÓW"), null,
+ new Location(LocationType.STATION, "5196003", null, "WARSZAWA"), new Date(), true, null);
+ print(result);
+ final QueryTripsResult laterResult = queryMoreTrips(result.context, true);
+ print(laterResult);
+ }
+}
diff --git a/test/de/schildbach/pte/live/secrets.properties.template b/test/de/schildbach/pte/live/secrets.properties.template
index ee89c204..e51e8320 100644
--- a/test/de/schildbach/pte/live/secrets.properties.template
+++ b/test/de/schildbach/pte/live/secrets.properties.template
@@ -30,6 +30,7 @@ sncb.api_authorization =
dsb.api_authorization =
se.api_authorization =
lu.api_authorization =
+pl.api_authorization =
bart.api_authorization =
cmta.api_authorization =
vrs.client_certificate =