Crates.io | lunaria-api |
lib.rs | lunaria-api |
version | 0.2.1 |
source | src |
created_at | 2020-09-26 15:32:02.319086 |
updated_at | 2021-08-09 16:07:36.637153 |
description | A Rust API client for the video game Lunaria |
homepage | https://playlunaria.com |
repository | https://github.com/playlunaria/lunaria |
max_upload_size | |
id | 293181 |
size | 9,300 |
A Rust API client for the video game Lunaria.
Lunaria is a video game for programmers, and is played by writing code that interacts with the game through a gRPC API. This crate contains a gRPC client that is auto-generated from the Protocol Buffers that declare Lunaria's API.
First, add lunaria-api
as a dependency to your Cargo.toml
.
Because lunaria-api
wraps a client generated by tonic
, it must be
added as a dependency as well. And if you are building a binary, you also need
an async runtime like tokio
.
[dependencies]
lunaria-api = "0.2.1"
tokio = { version = "0.2.22", features = ["macros", "rt-threaded"] }
tonic = "0.3.1"
Next, import LunariaClient
and connect to the game server. Check out Lunaria's
API specification below to learn about all the requests you can send, and the
data they require and return:
https://github.com/playlunaria/lunaria-api/tree/main/protobufs
Here is an example that fetches the version of the game:
use lunaria_api::lunaria::v1::lunaria_service_client::LunariaSerrviceClient;
use lunaria_api::lunaria::v1::{GetVersionRequest, GetVersionResponse, Version};
use tonic::Request;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Specify the address and port of Lunaria's API
let address = "http://127.0.0.1:1904";
// Initialize the client
let mut lunaria = LunariaServiceClient::connect(address).await?;
// Create a request to get the game's version and send it to the server
let request = Request::new(GetVersionRequest {});
let grpc_response = lunaria.get_version(request).await?;
let version_response = grpc_response.into_inner();
if let Some(version) = version_response.version {
assert_eq!(0, version.major);
assert_eq!(0, version.minor);
assert_eq!(0, version.patch);
}
Ok(())
}
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.