summaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 210699b5..a82c2ace 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,2 +1,22 @@
pub mod authorization;
pub use authorization::{Authorizer, CedarAuthorizer, CheckService};
+
+use envoy_types::ext_authz::v3::pb::AuthorizationServer;
+use std::sync::Arc;
+use tonic::transport::Server;
+
+pub fn create_server() -> Result<tonic::transport::server::Router, Box<dyn std::error::Error>> {
+ let (_health_reporter, health_service) = tonic_health::server::health_reporter();
+ let authorizer = Arc::new(authorization::CedarAuthorizer::default());
+ let check_service = authorization::CheckService::new(authorizer);
+ let server = Server::builder()
+ .add_service(AuthorizationServer::new(check_service))
+ .add_service(health_service)
+ .add_service(
+ tonic_reflection::server::Builder::configure()
+ .register_encoded_file_descriptor_set(tonic_health::pb::FILE_DESCRIPTOR_SET)
+ .build_v1()
+ .unwrap(),
+ );
+ Ok(server)
+}