Add test gRPC server

This commit is contained in:
chmanie 2023-05-21 14:25:30 +02:00
parent b6bbd540dd
commit 73cb9ddbda
4 changed files with 85 additions and 1 deletions

9
Cargo.lock generated
View File

@ -186,6 +186,15 @@ dependencies = [
"num-traits", "num-traits",
] ]
[[package]]
name = "crabidy"
version = "0.1.0"
dependencies = [
"crabidy-core",
"tokio",
"tonic",
]
[[package]] [[package]]
name = "crabidy-core" name = "crabidy-core"
version = "0.1.0" version = "0.1.0"

View File

@ -1,2 +1,2 @@
[workspace] [workspace]
members = ["crabidy-core", "cbd-tui"] members = ["crabidy-core", "crabidy", "cbd-tui"]

11
crabidy/Cargo.toml Normal file
View File

@ -0,0 +1,11 @@
[package]
name = "crabidy"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
crabidy-core = { path = "../crabidy-core" }
tonic = "0.9"
tokio = { version = "1", features = ["full"] }

64
crabidy/src/main.rs Normal file
View File

@ -0,0 +1,64 @@
use std::vec;
use crabidy_core::proto::crabidy::{
library_service_server::{LibraryService, LibraryServiceServer},
GetLibraryNodeRequest, GetLibraryNodeResponse, GetTrackRequest, GetTrackResponse, LibraryNode,
LibraryNodeState,
};
use tonic::{transport::Server, Request, Response, Status};
#[derive(Debug, Default)]
pub struct Library {}
#[tonic::async_trait]
impl LibraryService for Library {
async fn get_library_node(
&self,
request: Request<GetLibraryNodeRequest>,
) -> Result<Response<GetLibraryNodeResponse>, Status> {
println!("Got a library node request: {:?}", request);
let req = request.into_inner();
let reply = GetLibraryNodeResponse {
node: Some(LibraryNode {
uuid: "1".to_owned(),
name: "Tidal".to_owned(),
children: vec![
"Berlin, Texas".to_owned(),
"Spacefarer".to_owned(),
"Italo Disco".to_owned(),
],
parent: None,
tracks: vec![],
state: LibraryNodeState::Unspecified.into(),
is_queable: true,
}),
};
Ok(Response::new(reply))
}
async fn get_track(
&self,
request: Request<GetTrackRequest>,
) -> Result<Response<GetTrackResponse>, Status> {
println!("Got a track request: {:?}", request);
let req = request.into_inner();
let reply = GetTrackResponse { track: None };
Ok(Response::new(reply))
}
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let addr = "[::1]:50051".parse()?;
let crabidy_service = Library::default();
Server::builder()
.add_service(LibraryServiceServer::new(crabidy_service))
.serve(addr)
.await?;
Ok(())
}