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编码

Download history 207/week @ 2024-06-14 7/week @ 2024-06-21 4/week @ 2024-06-28 21/week @ 2024-07-05

每月383次下载

MIT 许可证

60KB
1.5K SLoC

SEPTA-API crates.io

此项目为开发者提供了一个标准且易于使用的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