WMATA.swift is a Swift interface to the Washington Metropolitan Area Transit Authority API.
- Swift 5.9
- Xcode 15
dependencies: [
.package(
name: "WMATA",
url: "https://github.com/emma-k-alexandra/WMATA.swift.git",
.upToNextMajor(from: "15.0.0")
)
]
To work with WMATA's Standard API use the WMATA
package.
import WMATA
let nextTrains = Rail.NextRails(
key: YOUR_API_KEY,
station: .waterfront
)
nextTrains.request { result in
switch result {
case let .success(response):
print(response.trains)
case let .failure(error):
print(error)
}
}
To work with GTFS Static data use the MetroGTFS
package.
import MetroGTFS
let ashburn = try GTFSStop("STN_N12")
print(ashburn.name) // "ASHBURN METRORAIL STATION"
Full documentation is available at https://emma-k-alexandra.github.io/WMATA.swift/documentation/wmata/ or within Xcode.
To view documentation within Xcode, within the menu navigate to Product > Build Documentation
. WMATA's documentation will appear under Workspace Documentation
within the Developer Documentation window. Navigate to Window > Developer Documentation
to open this window.
WMATA.swift commits to supporting current minus 2 OS versions.
Currently, WMATA.swift is compatible with macOS 12, iOS 15, tvOS 15, watchOS 8 or higher.
WMATA.swift uses semantic versioning. Only major versions will contain breaking changes.
- swift-protobuf, for GTFS-RT feeds.
- DVR, for testing.
- SQLite.swift, for GTFS Static data. Only used in
MetroGTFS
package.
Feel free to email questions and comments to emma@emma.sh
Todo:
- Support all GTFS Static data in
MetroGTFS
- Convert async functions from a
Result
toreturn
orthrow
behavior, the dominant async pattern in Swift
To generate documentation for deploying to Github Pages, run ./docs.sh
.
WMATA.swift is released under the MIT license. See LICENSE for details.
This package is not distributed by or affiliated with WMATA.