2个不稳定版本
使用旧的Rust 2015
0.2.0 | 2018年9月5日 |
---|---|
0.1.0 | 2018年8月28日 |
#3 在 #spacex
54KB
1K SLoC
space-rx
Rust对非官方SpaceX API的封装(可以在这里找到)。
安装
将以下内容添加到您的 Cargo.toml
文件中
[dependencies]
space_rx = "0.2"
概述
此crate提供了对非官方SpaceX API中所有可用端点的易于使用的请求构建器。这些请求构建器在发送后会返回一个模型,这反过来又为您提供了对每个端点暴露的所有字段的类型安全、Rust式的访问。
示例
以下是一个示例,我们在v2/rockets/{rocket_id}
端点进行请求 - 我们在请求构建器中将rocket_id
指定为一个字段。
extern crate space_rx;
use space_rx::v2_api::requests::rocket::*;
fn main() {
let req = RocketRequestBuilder::default().rocket_id("falcon9").build().unwrap();
let rocket = space_rx::send(&req).unwrap();
println!("The Falcon 9 weighs {:?}lbs. Wow!", rocket.mass.lb);
println!("The Falcon 9's landing legs are made out of {:?}.", rocket.landing_legs.material.unwrap());
println!("The Falcon 9's {:?} engine(s) use {:?} and {:?} as propellant.", rocket.engines.number, rocket.engines.propellant_1, rocket.engines.propellant_2);
}
星舟的情况如何?让我们看看!
extern crate space_rx;
use space_rx::v2_api::requests::info::*;
fn main() {
let req = RoadsterInfoRequestBuilder::default().build().unwrap();
let roadster_info = space_rx::send(&req).unwrap();
println!("Here's how Starman is doing: {:?}", roadster_info);
}
具有launch
风格的端点有很多潜在参数可以过滤请求。让我们尝试一些。
extern crate space_rx;
use space_rx::SortDir;
use space_rx::v2_api::requests::launch::*;
fn main() {
let req = AllLaunchesRequestBuilder::default().reused(true)
.start("2010-06-22")
.customer("Telkom")
.site_name("CCAFS SLC 40")
.order(SortDir::DESC)
.build()
.unwrap();
let launches = space_rx::send(&req).unwrap();
println!("{:?}", launches);
}
然后我们得到了一些关于Dragon 1胶囊的信息。
extern crate space_rx;
use space_rx::v2_api::requests::capsule::*;
fn main() {
let req = CapsuleRequestBuilder::default().capsule_id("dragon1").build().unwrap();
let capsule = space_rx::send(&req).unwrap();
println!("The Dragon 1 capsule can hold {:?} people.", capsule.crew_capacity);
println!("How much junk does the Dragon 1 capsule have in the trunk? Well, this much: {:?}.", capsule.trunk);
}
对SpaceX使用的发射台感兴趣吗?我们可以尝试一下。
extern crate space_rx;
use space_rx::v2_api::requests::launchpad::*;
fn main() {
let req = LaunchpadRequestBuilder::default().launchpad_id("ksc_lc_39a").build().unwrap();
let kennedy_space_center_39a_launchpad = space_rx::send(&req).unwrap();
println!("{:?} has launched these rockets: {:?}.", kennedy_space_center_39a_launchpad.full_name, kennedy_space_center_39a_launchpad.vehicles_launched);
println!("{:?} is located at {:?}.", kennedy_space_center_39a_launchpad.full_name, kennedy_space_center_39a_launchpad.location);
}
所有胶囊中使用的部件是什么?我们也可以找到这一点。
extern crate space_rx;
use space_rx::v2_api::requests::part::*;
fn main() {
let req = AllCapsulePartsRequestBuilder::default().build().unwrap();
let capsule_parts = space_rx::send(&req).unwrap();
println!("Here are the parts used in SpaceX capsules: {:?}", capsule_parts);
}
许可
这是Apache/2或MIT许可证,根据您的选择。所有贡献也都在同一许可证下。
依赖项
~17–26MB
~459K SLoC