Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Navitia: Add Brazil providers #179

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions enabler/src/de/schildbach/pte/AbstractNavitiaProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -721,6 +721,9 @@ public NearbyLocationsResult queryNearbyLocations(final EnumSet<LocationType> ty

try {
final JSONObject head = new JSONObject(page.toString());
if (head.has("error")) {
return new NearbyLocationsResult(resultHeader, Status.INVALID_ID);
}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One of the live tests with an invalid station arrived here and head had no pagination, but an error.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe this change should go into a different PR that implements error handling for all Navitia calls?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You seem to be merging PRs manually somehow. Couldn't you just split these 3 lines out into a separate commit when you do? I am happy to waive ownership on them.


final JSONObject pagination = head.getJSONObject("pagination");
final int nbResults = pagination.getInt("total_result");
Expand Down
44 changes: 44 additions & 0 deletions enabler/src/de/schildbach/pte/BrFloripaProvider.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/*
* Copyright 2014-2015 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 <http://www.gnu.org/licenses/>.
*/

package de.schildbach.pte;

import javax.annotation.Nullable;

import okhttp3.HttpUrl;

/**
* @author Torsten Grote
*/
public class BrFloripaProvider extends AbstractNavitiaProvider
{
private static final String API_REGION = "br-floripa";

public BrFloripaProvider(final HttpUrl api, @Nullable final String authorization)
{
super(NetworkId.BRFLORIPA, api, authorization);

setTimeZone("America/Sao_Paulo");
}

@Override
public String region()
{
return API_REGION;
}

}
78 changes: 78 additions & 0 deletions enabler/src/de/schildbach/pte/BrProvider.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
/*
* Copyright 2014-2015 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 <http://www.gnu.org/licenses/>.
*/

package de.schildbach.pte;


import de.schildbach.pte.dto.Product;
import de.schildbach.pte.dto.Style;
import de.schildbach.pte.dto.Style.Shape;

/**
* @author Torsten Grote
*/
public class BrProvider extends AbstractNavitiaProvider
{
private static final String API_REGION = "br";

public BrProvider(final String authorization)
{
super(NetworkId.BR, authorization);

setTimeZone("America/Sao_Paulo");
}

@Override
public String region()
{
return API_REGION;
}

@Override
protected Style getLineStyle(final String network, final Product product, final String code, final String color)
{
final Style defaultStyle = Standard.STYLES.get(product);
int bc = defaultStyle.backgroundColor;
int fc = defaultStyle.foregroundColor;
if(color != null) {
bc = Style.parseColor(color);
fc = computeForegroundColor(color);
}

switch (product)
{
case SUBURBAN_TRAIN:
{
return new Style(Shape.CIRCLE, bc, fc);
}
case SUBWAY:
{
return new Style(Shape.CIRCLE, bc, fc);
}
case TRAM:
{
return new Style(Shape.RECT, bc, fc);
}
case BUS:
{
return new Style(Shape.RECT, bc, fc);
}
default:
return new Style(bc, fc);
}
}
}
4 changes: 4 additions & 0 deletions enabler/src/de/schildbach/pte/NetworkId.java
Original file line number Diff line number Diff line change
Expand Up @@ -83,4 +83,8 @@ public enum NetworkId {

// Africa
GHANA,

// Brazil
BR, BRFLORIPA,

}
84 changes: 84 additions & 0 deletions enabler/test/de/schildbach/pte/live/BrFloripaProviderLiveTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
/*
* Copyright 2014-2015 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 <http://www.gnu.org/licenses/>.
*/

package de.schildbach.pte.live;

import org.junit.Test;

import de.schildbach.pte.BrFloripaProvider;
import de.schildbach.pte.BrProvider;
import de.schildbach.pte.dto.Point;
import okhttp3.HttpUrl;

import static org.junit.Assert.assertTrue;

/**
* @author Torsten Grote
*/
public class BrFloripaProviderLiveTest extends AbstractNavitiaProviderLiveTest {

public BrFloripaProviderLiveTest() {
super(new BrFloripaProvider(HttpUrl.parse("https://transportr.grobox.de/api/v1/"), null));
}

@Test
public void nearbyStationsAddress() throws Exception {
nearbyStationsAddress(-27597000, -48553000);
}

@Test
public void nearbyStationsStation() throws Exception {
nearbyStationsStation("stop_point:43719878");
}

@Test
public void nearbyStationsInvalidStation() throws Exception {
nearbyStationsInvalidStation("stop_point:3719878");
}

@Test
public void queryDeparturesEquivsFalse() throws Exception {
queryDeparturesEquivsFalse("stop_point:43719878");
}

@Test
public void queryDeparturesInvalidStation() throws Exception {
queryDeparturesInvalidStation("stop_point:OWX:SP:6911");
}

@Test
public void suggestLocations() throws Exception {
suggestLocationsFromName("Lagoa");
}

@Test
public void queryTripStations() throws Exception {
queryTrip("Rua da Capela", "Bola de Neve Church");
}

@Test
public void queryMoreTrips() throws Exception {
queryMoreTrips("CELESC", "SC-406");
}

@Test
public void getArea() throws Exception {
final Point[] polygon = provider.getArea();
assertTrue(polygon.length > 0);
}

}
89 changes: 89 additions & 0 deletions enabler/test/de/schildbach/pte/live/BrProviderLiveTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
/*
* Copyright 2014-2015 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 <http://www.gnu.org/licenses/>.
*/

package de.schildbach.pte.live;

import org.junit.Test;

import de.schildbach.pte.BrProvider;
import de.schildbach.pte.dto.Point;

import static org.junit.Assert.assertTrue;

/**
* @author Torsten Grote
*/
public class BrProviderLiveTest extends AbstractNavitiaProviderLiveTest {

public BrProviderLiveTest() {
super(new BrProvider(secretProperty("navitia.authorization")));
}

@Test
public void nearbyStationsAddress() throws Exception {
// Sao Paulo
nearbyStationsAddress(-23547900, -46635200);
}

@Test
public void nearbyStationsAddress2() throws Exception {
// Rio de Janeiro
nearbyStationsAddress(-22905300, -43179500);
}

@Test
public void nearbyStationsStation() throws Exception {
nearbyStationsStation("stop_point:OIO:SP:18255914");
}

@Test
public void nearbyStationsInvalidStation() throws Exception {
nearbyStationsInvalidStation("stop_point:OIO:SPX:18255914");
}

@Test
public void queryDeparturesEquivsFalse() throws Exception {
queryDeparturesEquivsFalse("stop_point:OSA:SP:800016608");
}

@Test
public void queryDeparturesInvalidStation() throws Exception {
queryDeparturesInvalidStation("stop_point:OWX:SP:6911");
}

@Test
public void suggestLocations() throws Exception {
suggestLocationsFromName("Republica");
}

@Test
public void queryTripStations() throws Exception {
queryTrip("Benjamim Constant", "Avenida Paulista");
}

@Test
public void queryMoreTrips() throws Exception {
queryMoreTrips("Republica", "Avenida Paulista");
}

@Test
public void getArea() throws Exception {
final Point[] polygon = provider.getArea();
assertTrue(polygon.length > 0);
}

}