# hafas-rs Implementation of a HAFAS client in Rust. This is forked from [hafas-rs](https://cyberchaos.dev/yuka/hafas-rs/). This takes a lot of inspiration from the JavaScript [hafas-client](https://github.com/public-transport/hafas-client) library, which is licensed under ISC. ## Profiles The following profiles are currently supported: | Short Name | Long Name | |-----------------|-----------------------------------------------------| | AVV | Aachener Verkehrsverbund | | BLS | BLS AG | | CFL | Société Nationale des Chemins de Fer Luxembourgeois | | CMTA | Austin, Texas | | DART | Des Moines Area Rapid Transit | | DB | Deutsche Bahn | | HVV | Hamburg public transport | | Irish-Railway | Iarnród Éireann | | Mobiliteit-Lu | Mobilitéitszentral | | mobil-nrw | mobil.nrw | | NVV | Nordhessischer Verkehrsverbund | | NahSH | Nah.SH | | OÖVV | Oberösterreichischer Verkehrsverbund | | ÖBB | Österreichische Bundesbahnen | | PKP | Polskie Koleje Państwowe | | RMV | Rhein-Main-Verkehrsverbund | | RSAG | Rostocker Straßenbahn AG | | Rejseplanen | Rejseplanen in Denmark | | S-Bahn-München | S-Bahn München | | STV | Steirischer Verkehrsverbund | | SVV | Salzburger Verkehrsverbund | | saarVV | Saarfahrplan/VGS Saarland | | Salzburg | Salzburg | | TPG | Transports publics genevois | | VBB | Berlin & Brandenburg public transport | | VBN | Verkehrsverbund Bremen/Niedersachsen | | VGI | Ingolstädter Verkehrsgesellschaft | | VKG | Kärntner Linien/Verkehrsverbund Kärnten | | VMT | Verkehrsverbund Mittelthüringen | | VOR | Verkehrsverbund Ost-Region | | VOS | Verkehrsgemeinschaft Osnabrück | | VRN | Verkehrsverbund Rhein-Neckar | | VSN | Verkehrsverbund Süd-Niedersachsen | | VVT | Verkehrsverbund Tirol | | VVV | Verkehrsverbund Vorarlberg | | ZVV | Zürich public transport | The following profiles are currently being worked on: | Short Name | Long Name | Reason | |-----------------|-----------------------------------------------------|---------------------------------------------------------------------------------------------------------| | BART | Bay Area Rapid Transit | Custom certificate needed | | BVG | Berlin public transport | Too many customizations for now | | DB-Busradar-NRW | DB Busradar NRW | Always shows "No Connection" | | INSA | Nahverkehr Sachsen-Anhalt | Always shows "Location Missing or Invalid" | | IVB | Innsbrucker Verkehrsbetriebe | Custom certificate needed | | KVB | Kölner Verkehrs-Betriebe | Custom certificate needed | | ZVV | Zürich public transport | Authorization Failure | The following will probably never work: | Short Name | Long Name | Reason | |-----------------|-----------------------------------------------------|---------------------------------------------------------------------------------------------------------| | HVV | Hamburger Verkehrsverbund | Shut off endpoint | | SBB | Schweizerische Bundesbahnen | Shut off endpoint | | SNCB | Belgian National Railways | Shut off endpoint | | SNCF | Société nationale des chemins de fer français | Shut off endpoint | Note that some are gated behind non-default feature flags but broken. ## Feature Flags | Name | Description | Note | |--------------------|-------------------------------------------------------------|-------------------------------------------------------------------------------------------| | *-profile | Enable a certain profile | Not every profile gated behind its feature gate may work. Consult above table for details | | all-profiles | Enable all default profiles which should work | | | rt-multi-thread | Allow moving the client and hyper-requester between threads | | | hyper-requester | Enable requesting data with hyper | | | polylines | Allow returning polylines from journey results | Untested | | rest-server | Compile an (executable) rest-server | Should not be use with libraries | | js-error | Enable JavaScript errors for `hafas_rs::Error` | Untested | | js-fetch-requester | Enable requesting data within wasm | Untested | | wasm-bindings | Enable integration with wasm | Untested | ## License hafas-rs itself is dual-licensed AGPL-3.0-or-later and EUPL-1.2.