authz_resolver/domain/
local_client.rs1use std::sync::Arc;
4
5use async_trait::async_trait;
6use authz_resolver_sdk::{
7 AuthZResolverClient, AuthZResolverError, EvaluationRequest, EvaluationResponse,
8};
9use modkit_macros::domain_model;
10
11use super::{DomainError, Service};
12
13#[domain_model]
15pub struct AuthZResolverLocalClient {
16 svc: Arc<Service>,
17}
18
19impl AuthZResolverLocalClient {
20 #[must_use]
21 pub fn new(svc: Arc<Service>) -> Self {
22 Self { svc }
23 }
24}
25
26fn log_and_convert(op: &str, e: DomainError) -> AuthZResolverError {
27 tracing::error!(operation = op, error = ?e, "authz_resolver call failed");
28 e.into()
29}
30
31#[async_trait]
32impl AuthZResolverClient for AuthZResolverLocalClient {
33 async fn evaluate(
34 &self,
35 request: EvaluationRequest,
36 ) -> Result<EvaluationResponse, AuthZResolverError> {
37 self.svc
38 .evaluate(request)
39 .await
40 .map_err(|e| log_and_convert("evaluate", e))
41 }
42}