A rust crate for using the Transport for London (TFL) API.
Note: This is currently WIP and not ready for use.
Using cargo
, add this to your project's Cargo.toml
:
[dependencies]
tfl-api-wrapper = "0.1.2"
- If you don't already have an account, register on TFL API Portal.
- Vist the Products link and create a new subscription for
500 Requests per min
(allows 500 requests per min). - Next, visit your profile, scroll down to the
Primary key
section of your subscription, click onShow
and copy the value. You can use either ofPrimary key
orSecondary key
.
Set the APP_KEY
environment variable.
Instantiate the Client
using:
use tfl_api_wrapper::{Client, RequestBuilder};
let client = Client::new(std::env::var("APP_KEY").unwrap());
Here APP_KEY
could be either Primary key
or Secondary key
.
Get the API version:
async fn it_is_version_1() {
use tfl_api_wrapper::{Client, RequestBuilder};
let client = Client::new(std::env::var("APP_KEY").unwrap());
let ver = client.api_version().fetch().await.unwrap();
}
Get arrival predictions by lines
async fn get_arrivals_by_lines() {
use tfl_api_wrapper::{Client, RequestBuilder, linemodels};
use std::env;
let client = Client::new(env::var("APP_KEY").unwrap().into());
let lines: Vec<linemodels::LineID> = vec![linemodels::LineID::Bakerloo, linemodels::LineID::Jubilee];
let arrivals = client
.arrival_predictions_by_lines()
.line(lines)
.fetch()
.await
.unwrap();
}
You can run the tests by running:
APP_KEY=hjdhajsdas cargo test
- Version - Shows the API version
- Line
- Get all valid routes for all lines, including the name and id of the originating and terminating stops for each route.
- Get all valid routes for given line ids, including the name and id of the originating and terminating stops for each route.
- Get disruptions for all lines of the given modes.
- Get disruptions for the given line ids.
- Get the list of arrival predictions for given line ids based at the given stop
- Gets a list of the stations that serve the given line id
- Gets a list of valid disruption categories
- Gets a list of valid modes
- Gets a list of valid ServiceTypes to filter on
- Gets a list of valid severity codes
- Gets all lines and their valid routes for given modes, including the name and id of the originating and terminating stops for each route
- Gets all valid routes for given line id, including the sequence of stops on each route.
- Gets lines that match the specified line ids
- Gets lines that serve the given modes.
- Gets the line status for all lines with a given severity
- Currently, the enum types created for Lines does not contain buses starting with numeric characters (e.g. 101).
- Existing tfl wrappers
- tfl-api-wrapper - NodeJS wrapper for TFL API, made with TypeScript.
- tfl-api-wrapper-py - Python wrapper for TFL API
- go-tfl - Go client for TFL API
- Adzuna-rs - For existing wrapper implementation for Adzuna API.