diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/server.rs b/src/server.rs index d6a8bca..b52c56f 100644 --- a/src/server.rs +++ b/src/server.rs @@ -3,6 +3,29 @@ use tonic::{Request, Response, Status, transport::Server}; use hello_world::greeter_server::{Greeter, GreeterServer}; use hello_world::{HelloReply, HelloRequest}; +use authz_rpc::ability_server::{Ability, AbilityServer}; +use authz_rpc::{AllowReply, AllowRequest}; + +pub mod authz_rpc { + tonic::include_proto!("authz.rpc"); +} + +#[derive(Debug, Default)] +pub struct MyAbility {} + +#[tonic::async_trait] +impl Ability for MyAbility { + async fn allowed( + &self, + request: Request<AllowRequest>, + ) -> Result<Response<AllowReply>, Status> { + println!("Got a request: {:?}", request); + + let reply = AllowReply { result: true }; + Ok(Response::new(reply)) + } +} + pub mod hello_world { tonic::include_proto!("helloworld"); } @@ -29,10 +52,12 @@ impl Greeter for MyGreeter { #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> { let addr = "[::1]:50051".parse()?; + let ability = MyAbility::default(); let greeter = MyGreeter::default(); Server::builder() .add_service(GreeterServer::new(greeter)) + .add_service(AbilityServer::new(ability)) .serve(addr) .await?; |
