From 21d7bda7a82b18f6257d3cef5bebbeaa6c923849 Mon Sep 17 00:00:00 2001 From: Katsute <58778985+Katsute@users.noreply.github.com> Date: Mon, 18 Mar 2024 21:24:33 -0400 Subject: [PATCH 1/4] update links --- README.md | 15 ++++++++------- assets/static-gtfs-data.png | Bin 0 -> 68484 bytes 2 files changed, 8 insertions(+), 7 deletions(-) create mode 100644 assets/static-gtfs-data.png diff --git a/README.md b/README.md index 9bbb139..98ce2d9 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ > ⚠️ The MTA API [Terms and Conditions](https://api.mta.info/#/DataFeedAgreement) prohibits developers from giving users direct access to MTA servers. > Any realtime data that is retrieved in this library **must be served to users on your own servers.** -OneMTA is a Java wrapper for the [MTA SIRI REST API](https://bustime.mta.info/wiki/Developers/SIRIIntro) and [MTA Realtime GTFS API](https://api.mta.info/#/landing). +OneMTA is a Java wrapper for the [MTA SIRI REST API](https://bustime.mta.info/wiki/Developers/SIRIIntro) and [MTA Realtime GTFS API](https://api.mta.info/). ## Installation @@ -41,13 +41,15 @@ Compiled binaries can be installed from: #### Authentication 1. Request a bus token at . - 2. Request a subway token at . + 2. ~~Request a subway token at .~~ + + API keys are no longer required to access GTFS feeds. 3. OneMTA requires static data from the MTA for most route and stop information. - Latest static data for the MTA is available at . + Latest static data for the MTA is available at . Static data is only required for the endpoints you are using. All boroughs are required for buses, including bus company. - [![static datafeeds](https://raw.githubusercontent.com/KatsuteDev/OneMTA/main/assets/static-datafeeds.png)](http://web.mta.info/developers/developer-data-terms.html#data) + [![static datafeeds](https://raw.githubusercontent.com/KatsuteDev/OneMTA/main/assets/static-gtfs-data.png)](https://new.mta.info/developers) 4. Initialize OneMTA ```java MTA mta = MTA.create( @@ -142,11 +144,10 @@ For local tests you can use Java 8+, however only methods in the Java 8 API may - You must run `install.sh` to initialize test resources. - (Bus) Run tests locally by adding a text file named `bus.txt` that contains the bus token in the `src/test/java/resources` directory. - - (Subway) Run tests locally by adding a text file named `subway.txt` that contains the subway in the `src/test/java/resources` directory. #### Running Tests using GitHub Actions -Developers running remote tests through GitHub Actions may do so by running the `MTA CI` workflow manually in the actions tab of your fork. Note that this requires two secrets, a `BUS_TOKEN` which contains the bus token, and a `SUBWAY_TOKEN` which contains the subway token. +Developers running remote tests through GitHub Actions may do so by running the `MTA CI` workflow manually in the actions tab of your fork. Note that this requires a single secret, a `BUS_TOKEN` which contains the bus token. @@ -155,6 +156,6 @@ Developers running remote tests through GitHub Actions may do so by running the This library is released under the [GNU General Public License (GPL) v2.0](https://github.com/KatsuteDev/OneMTA/blob/main/LICENSE). * [@Katsute](https://github.com/Katsute) and [@KatsuteDev](https://github.com/KatsuteDev) are not affiliated with the MTA. - * By using the MTA API you are subject to their [Terms and Conditions](https://api.mta.info/#/DataFeedAgreement). + * By using the MTA API you are subject to their [Terms and Conditions](https://new.mta.info/developers/terms-and-conditions). > In developing your app, you will provide that the MTA data feed is available to others only from a non-MTA server. Accordingly, you will download and store the MTA data feed on a non-MTA server which users of your App will access in order to obtain data. MTA prohibits the development of an app that would make the data available to others directly from MTA's server(s). \ No newline at end of file diff --git a/assets/static-gtfs-data.png b/assets/static-gtfs-data.png new file mode 100644 index 0000000000000000000000000000000000000000..77f96689543fdbbde0ed69e7654b4cde5ca61852 GIT binary patch literal 68484 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 T(B%5_k*k+XFP2`gfBe4y^p<)J literal 0 HcmV?d00001 From a76c01cb6052bfb064683b6efb716061863b71db Mon Sep 17 00:00:00 2001 From: Katsute <58778985+Katsute@users.noreply.github.com> Date: Tue, 19 Mar 2024 01:35:14 +0000 Subject: [PATCH 2/4] remove need for token --- .github/workflows/mta_ci.yml | 3 -- pom.xml | 2 +- src/main/java/dev/katsute/onemta/MTA.java | 15 ++++---- src/main/java/dev/katsute/onemta/MTAImpl.java | 6 ++-- .../java/dev/katsute/onemta/MTAService.java | 34 +++++++++---------- .../java/dev/katsute/onemta/TestProvider.java | 6 ++-- 6 files changed, 28 insertions(+), 38 deletions(-) diff --git a/.github/workflows/mta_ci.yml b/.github/workflows/mta_ci.yml index 424b9fa..61b9803 100644 --- a/.github/workflows/mta_ci.yml +++ b/.github/workflows/mta_ci.yml @@ -36,9 +36,6 @@ jobs: - name: Load Client ID run: echo ${{ secrets.BUS_TOKEN }} > src/test/java/resources/bus.txt - - name: Load OAuth Token - run: echo ${{ secrets.SUBWAY_TOKEN }} > src/test/java/resources/subway.txt - - name: Load Test Group run: echo ${{ matrix.group }} > src/test/java/resources/TEST_GROUP diff --git a/pom.xml b/pom.xml index ec3e5d8..7d6b905 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ dev.katsute onemta - 2.1.0 + 3.0.0 diff --git a/src/main/java/dev/katsute/onemta/MTA.java b/src/main/java/dev/katsute/onemta/MTA.java index 4f22b57..28ba77d 100644 --- a/src/main/java/dev/katsute/onemta/MTA.java +++ b/src/main/java/dev/katsute/onemta/MTA.java @@ -30,7 +30,7 @@ * Authenticate using {@link #create(String, String, DataResource...)} * * @since 1.0.0 - * @version 1.0.0 + * @version 3.0.0 * @author Katsute */ @SuppressWarnings({"SpellCheckingInspection", "UnusedReturnValue"}) @@ -42,15 +42,14 @@ public abstract class MTA { * Creates an MTA API interface. Note that bus alerts require a subway token. * * @param busToken bus token - * @param subwayToken subway token * @param resources (required) static data resource, see {@link DataResource} * @return MTA * * @see #create(String, String, int, DataResource...) - * @since 1.0.0 + * @since 3.0.0 */ - public static MTA create(final String busToken, final String subwayToken, final DataResource... resources){ - return create(busToken, subwayToken, -1, resources); + public static MTA create(final String busToken, final DataResource... resources){ + return create(busToken, -1, resources); } /** @@ -63,10 +62,10 @@ public static MTA create(final String busToken, final String subwayToken, final * @return MTA * * @see #create(String, String, DataResource...) - * @since 1.0.0 + * @since 3.0.0 */ - public static MTA create(final String busToken, final String subwayToken, final int cacheSeconds, final DataResource... resources){ - return new MTAImpl(busToken, subwayToken, cacheSeconds, resources); + public static MTA create(final String busToken, final int cacheSeconds, final DataResource... resources){ + return new MTAImpl(busToken, cacheSeconds, resources); } // bus methods diff --git a/src/main/java/dev/katsute/onemta/MTAImpl.java b/src/main/java/dev/katsute/onemta/MTAImpl.java index fec0053..6445ab1 100644 --- a/src/main/java/dev/katsute/onemta/MTAImpl.java +++ b/src/main/java/dev/katsute/onemta/MTAImpl.java @@ -35,17 +35,15 @@ final class MTAImpl extends MTA { final transient String busToken; - final transient String subwayToken; final MTAService service; private final DataResource[] resources; - MTAImpl(final String busToken, final String subwayToken, final int cacheSeconds, final DataResource... resources){ - this.service = new MTAService(busToken, subwayToken, cacheSeconds); + MTAImpl(final String busToken, final int cacheSeconds, final DataResource... resources){ + this.service = new MTAService(busToken, cacheSeconds); this.busToken = busToken; - this.subwayToken = subwayToken; this.resources = resources == null ? new DataResource[0] : Arrays.copyOf(resources, resources.length); } diff --git a/src/main/java/dev/katsute/onemta/MTAService.java b/src/main/java/dev/katsute/onemta/MTAService.java index 7871cde..52648f1 100644 --- a/src/main/java/dev/katsute/onemta/MTAService.java +++ b/src/main/java/dev/katsute/onemta/MTAService.java @@ -31,13 +31,11 @@ final class MTAService { private final RequestCache cache; - private final Map busAuth, subwayAuth; + private final Map busAuth; - MTAService(final String busToken, final String subwayToken, final int cacheSeconds){ + MTAService(final String busToken, final int cacheSeconds){ this.cache = new RequestCache(cacheSeconds); - busAuth = Collections.singletonMap("key", busToken); - subwayAuth = Collections.singletonMap("x-api-key", subwayToken); } private static String encodeUTF8(final String string){ @@ -96,7 +94,7 @@ final FeedMessage getACE(){ return cache.getProtobuf( baseURL + "nyct%2Fgtfs-ace", Collections.emptyMap(), - subwayAuth + Collections.emptyMap() ); } @@ -104,7 +102,7 @@ final FeedMessage getBDFM(){ return cache.getProtobuf( baseURL + "nyct%2Fgtfs-bdfm", Collections.emptyMap(), - subwayAuth + Collections.emptyMap() ); } @@ -112,7 +110,7 @@ final FeedMessage getG(){ return cache.getProtobuf( baseURL + "nyct%2Fgtfs-g", Collections.emptyMap(), - subwayAuth + Collections.emptyMap() ); } @@ -120,7 +118,7 @@ final FeedMessage getJZ(){ return cache.getProtobuf( baseURL + "nyct%2Fgtfs-jz", Collections.emptyMap(), - subwayAuth + Collections.emptyMap() ); } @@ -128,7 +126,7 @@ final FeedMessage getNQRW(){ return cache.getProtobuf( baseURL + "nyct%2Fgtfs-nqrw", Collections.emptyMap(), - subwayAuth + Collections.emptyMap() ); } @@ -136,7 +134,7 @@ final FeedMessage getL(){ return cache.getProtobuf( baseURL + "nyct%2Fgtfs-l", Collections.emptyMap(), - subwayAuth + Collections.emptyMap() ); } @@ -144,7 +142,7 @@ final FeedMessage get1234567(){ return cache.getProtobuf( baseURL + "nyct%2Fgtfs", Collections.emptyMap(), - subwayAuth + Collections.emptyMap() ); } @@ -152,7 +150,7 @@ final FeedMessage getSI(){ return cache.getProtobuf( baseURL + "nyct%2Fgtfs-si", Collections.emptyMap(), - subwayAuth + Collections.emptyMap() ); } @@ -168,7 +166,7 @@ final FeedMessage getLIRR(){ return cache.getProtobuf( baseURL + "lirr%2Fgtfs-lirr", Collections.emptyMap(), - subwayAuth + Collections.emptyMap() ); } @@ -185,7 +183,7 @@ final FeedMessage getMNR(){ return cache.getProtobuf( baseURL + "mnr%2Fgtfs-mnr", Collections.emptyMap(), - subwayAuth + Collections.emptyMap() ); } @@ -201,7 +199,7 @@ final FeedMessage getBus(){ return cache.getProtobuf( baseURL + "camsys%2Fbus-alerts", Collections.emptyMap(), - subwayAuth + Collections.emptyMap() ); } @@ -209,7 +207,7 @@ final FeedMessage getSubway(){ return cache.getProtobuf( baseURL + "camsys%2Fsubway-alerts", Collections.emptyMap(), - subwayAuth + Collections.emptyMap() ); } @@ -217,7 +215,7 @@ final FeedMessage getLIRR(){ return cache.getProtobuf( baseURL + "camsys%2Flirr-alerts", Collections.emptyMap(), - subwayAuth + Collections.emptyMap() ); } @@ -225,7 +223,7 @@ final FeedMessage getMNR(){ return cache.getProtobuf( baseURL + "camsys%2Fmnr-alerts", Collections.emptyMap(), - subwayAuth + Collections.emptyMap() ); } diff --git a/src/test/java/dev/katsute/onemta/TestProvider.java b/src/test/java/dev/katsute/onemta/TestProvider.java index 7e5d4e1..00a17d5 100644 --- a/src/test/java/dev/katsute/onemta/TestProvider.java +++ b/src/test/java/dev/katsute/onemta/TestProvider.java @@ -75,10 +75,8 @@ public static void acquireTestLock(){ // private static final File bus = new File(test_resources, "bus.txt"); - private static final File subway = new File(test_resources, "subway.txt"); private static final boolean hasBus = bus.exists(); - private static final boolean hasSubway = subway.exists(); private static final List resources = Arrays.asList( DataResourceType.Subway, @@ -96,7 +94,7 @@ public static void acquireTestLock(){ public static MTA getOneMTA(){ try{ - if(!hasBus && !hasSubway) + if(!hasBus) assumeTrue(false, "No token defined, skipping tests"); acquireTestLock(); @@ -105,7 +103,7 @@ public static MTA getOneMTA(){ for(final DataResourceType type : TestProvider.resources) resources.add(DataResource.create(type, new File(test_resources, "resource_" + type.name().toLowerCase() + ".zip"))); - return mta = MTA.create(strip(readFile(bus)), strip(readFile(subway)), resources.toArray(new DataResource[0])); + return mta = MTA.create(strip(readFile(bus)), resources.toArray(new DataResource[0])); }catch(final IOException e){ fail(e); return null; From 0b0d6053ca334a7039d01fa2530b4553ec2167d2 Mon Sep 17 00:00:00 2001 From: Katsute <58778985+Katsute@users.noreply.github.com> Date: Tue, 19 Mar 2024 01:37:47 +0000 Subject: [PATCH 3/4] remove token --- README.md | 1 - src/main/java/dev/katsute/onemta/MTA.java | 1 - src/test/java/dev/katsute/onemta/CompilerTests.java | 2 -- 3 files changed, 4 deletions(-) diff --git a/README.md b/README.md index 98ce2d9..0d66009 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,6 @@ Compiled binaries can be installed from: ```java MTA mta = MTA.create( busToken, - subwayToken, DataResource.create(DataResourceType.Bus_Bronx, new File("google_transit_bronx.zip")), DataResource.create(DataResourceType.Bus_Brooklyn, new File("google_transit_brooklyn.zip")), DataResource.create(DataResourceType.Bus_Manhattan, new File("google_transit_manhattan.zip")), diff --git a/src/main/java/dev/katsute/onemta/MTA.java b/src/main/java/dev/katsute/onemta/MTA.java index 28ba77d..6479568 100644 --- a/src/main/java/dev/katsute/onemta/MTA.java +++ b/src/main/java/dev/katsute/onemta/MTA.java @@ -56,7 +56,6 @@ public static MTA create(final String busToken, final DataResource... resources) * Creates an MTA API interface. Note that bus alerts require a subway token. * * @param busToken bus token - * @param subwayToken subway token * @param cacheSeconds how long to cache responses for * @param resources (required) static data resource, see {@link DataResource} * @return MTA diff --git a/src/test/java/dev/katsute/onemta/CompilerTests.java b/src/test/java/dev/katsute/onemta/CompilerTests.java index fdc68f7..57ea4fd 100644 --- a/src/test/java/dev/katsute/onemta/CompilerTests.java +++ b/src/test/java/dev/katsute/onemta/CompilerTests.java @@ -13,13 +13,11 @@ abstract class CompilerTests { @SuppressWarnings("SpellCheckingInspection") private void setup(){ String busToken = ""; - String subwayToken = ""; // setup MTA mta = MTA.create( busToken, - subwayToken, DataResource.create(DataResourceType.Bus_Bronx, new File("google_transit_bronx.zip")), DataResource.create(DataResourceType.Bus_Brooklyn, new File("google_transit_brooklyn.zip")), DataResource.create(DataResourceType.Bus_Manhattan, new File("google_transit_manhattan.zip")), From 398fcfc849a76ccaf7bf23671dacc4cf4c29022a Mon Sep 17 00:00:00 2001 From: Katsute <58778985+Katsute@users.noreply.github.com> Date: Tue, 19 Mar 2024 01:52:06 +0000 Subject: [PATCH 4/4] update t&c --- .devcontainer/devcontainer.json | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 2ac8c18..47160bf 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,6 +1,6 @@ { "image": "maven:3-eclipse-temurin-21", - "postAttachCommand": "git submodule update --init; ./install.sh; mvn compile", + "postAttachCommand": "git submodule update --init; mvn compile", "shutdownAction": "stopContainer", "customizations": { "vscode": { diff --git a/README.md b/README.md index 0d66009..fca6b3f 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@
-> ⚠️ The MTA API [Terms and Conditions](https://api.mta.info/#/DataFeedAgreement) prohibits developers from giving users direct access to MTA servers. +> ⚠️ The MTA API [Terms and Conditions](https://new.mta.info/developers/terms-and-conditions) prohibits developers from giving users direct access to MTA servers. > Any realtime data that is retrieved in this library **must be served to users on your own servers.** OneMTA is a Java wrapper for the [MTA SIRI REST API](https://bustime.mta.info/wiki/Developers/SIRIIntro) and [MTA Realtime GTFS API](https://api.mta.info/).