3 个版本

0.1.2 2024年6月7日
0.1.1 2024年6月5日
0.1.0 2023年12月20日

Web编程 中排名第391

每月下载量 35

Apache-2.0

72KB
973

Rust GBFS 语言绑定

Crates.io Version Crates.io License

Rust 类型,用于解析和处理通用自行车共享数据规范(《GBFS》)数据,确保 Rust 项目的类型安全和代码一致性。

在本库中,大多数 GBFS 规范要求的字段都被标记为 Option,因为它们可能不会在 GBFS 数据源中始终存在。

提供了一些辅助函数来从 GBFS 数据源获取数据。

安装

要在您自己的项目中使用 gbfs_types,您需要安装依赖项

cargo add gbfs_types

版本

目前仅支持 GBFS 3.0 版本

示例代码(类型)

use reqwest::Error;
use tokio;
use gbfs_types::v3_0::files::SystemInformationFile;

#[tokio::main]
async fn main() -> Result<(), Error> {
    let gbfs_url = "https://example-gbfs-feed/gbfs/3.0/system-information";
    let client = reqwest::Client::new();
    let response = client.get(url).header("User-Agent", "rust-reqwest").send().await?;

    if response.status().is_success() {
        let system_information: SystemInformationFile = response.json().await?;
        println!("systemInformation version: {}", system_information.version);
        println!("systemInformation data: {}", system_information.data.system_id);
    }
    Ok(())
}

示例代码(辅助函数)

use gbfs_types::v3_0::files::gbfs::GbfsDataFeeds;
use gbfs_types::v3_0::files::{GbfsData, SystemInformationFile};
use reqwest::Error;
use tokio;

use gbfs_types::v3_0::urls::SystemInformationFileUrl;
use gbfs_types::v3_0::GbfsObjects;

#[tokio::main]
async fn main() -> Result<(), Error> {
    let gbfs_data: GbfsData = GbfsData {
        feeds: vec![
            GbfsDataFeeds {
                name: "system_information".to_string(),
                url: "https://example-gbfs-feed/gbfs/3.0/system-information".to_string(),
            },
            // ... all other feeds
            GbfsDataFeeds{
                name: "gbfs_versions".to_string(),
                url: "https://example-gbfs-feed/gbfs/3.0/versions".to_string()
            }
        ],
    };
    let system_information = gbfs_data.get_system_information().await;

    match system_information {
        Ok(Some(info)) => {
            // Successfully retrieved SystemInformationFile
            println!("System Information: {:?}", info.data.email);
        }
        Ok(None) => {
            // SystemInformationFile was not present
            println!("No system information available.");
        }
        Err(e) => {
            // Handle the error
            eprintln!("Error retrieving system information: {}", e);
        }
    }
    Ok(())
}

贡献

我们感谢 Fluctuo 慷慨地提供这个仓库。他们的支持和贡献对我们项目的进步以及社区内的合作至关重要。感谢您对开源的奉献,感谢您为全球开发者赋能。

依赖项

~9–21MB
~343K SLoC