8个版本
0.4.0 | 2024年6月16日 |
---|---|
0.3.4 | 2023年9月3日 |
0.3.3 | 2023年6月11日 |
0.3.1 | 2023年5月28日 |
0.1.0 | 2023年4月12日 |
#319 在 编码
每月383次下载
60KB
1.5K SLoC
SEPTA-API
此项目为开发者提供了一个标准且易于使用的Rust API,用于调用SEPTA(东南宾夕法尼亚交通管理局)API的各种端点。它处理请求和响应的序列化和反序列化,并允许开发者使用提供的好定义的数据类型。它还处理API的一些杂乱部分(每个站点多次序列化、古怪端点响应、多种日期时间格式等)。
示例用法
use septa_api::{requests, types, Client};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create a new client with the default url
let client = Client::new();
// Get a list of all active trains
let train_view_response = client.train_view().await?;
for train in train_view_response {
println!("Train {} is heading to {}", train.train_number, train.dest);
}
// Make a request to get the next arrivals
let arrivals_request = requests::ArrivalsRequest {
station: types::RegionalRailStop::TempleUniversity,
results: None,
direction: None,
};
let arrivals_response = client.arrivals(arrivals_request).await?;
println!("Trains coming in southbound:");
for southbound_arrival in arrivals_response.southbound {
println!(
"Train {} is {}",
southbound_arrival.train_id, southbound_arrival.status
);
}
println!("Trains coming in northbound:");
for northbound_arrival in arrivals_response.northbound {
println!(
"Train {} is {}",
northbound_arrival.train_id, northbound_arrival.status
);
}
Ok(())
}
测试
此crate在每天早晨(美国东部时间8:30)和晚上(美国东部时间5:15)高峰时段以及深夜(美国东部时间3:00)进行测试。你可能想知道为什么会有这样的差异,原因是为了在网络流量高峰期和平静期尝试获取数据。SEPTA在概述所有API响应方面不是最好的,因此该库中的一些部分是逆向工程。通过捕捉这两种状态,我们希望检测到SEPTA API中的任何破坏性更改,并因此尽快修复。
API实现和测试状态
实时数据API
端点 | 已实现 | 已测试 |
---|---|---|
/Arrivals/index.php |
✅ | ✅ |
/TrainView/index.php |
✅ | ✅ |
/NextToArrive/index.php |
✅ | ✅ |
/TransitView/index.php |
❌ | ❌ |
/TransitViewAll/index.php |
❌ | ❌ |
/BusDetours/index.php |
❌ | ❌ |
/Alerts/index.php |
❌ | ❌ |
/Alerts/get_alert_data.php |
❌ | ❌ |
/elevator/index.php |
❌ | ❌ |
静态数据API
端点 | 已实现 | 已测试 |
---|---|---|
/RRSchedules/index.php |
✅ | ✅ |
/BusSchedules/index.php |
❌ | ❌ |
/Stops/index.php |
❌ | ❌ |
/locations/get_locations.php |
❌ | ❌ |
作者
Stefan Bossbaly
许可证
本项目采用MIT许可证 - 请参阅LICENSE文件以获取详细信息
致谢
依赖关系
~5–17MB
~228K SLoC