polyester-sdk 0.1.0-alpha.27

Official Rust SDK for Polyester APIs.
Documentation
//! Thin helpers around Connect unary calls.

use crate::errors::Result;
use crate::transport::Factory;
use buffa::Message;
use connectrpc::ConnectError;
use connectrpc::client::{CallOptions, UnaryResponse};
use serde::Serialize;
use std::future::Future;

#[inline]
pub async fn await_public<R>(
    call: impl Future<Output = std::result::Result<UnaryResponse<R>, ConnectError>>,
) -> Result<UnaryResponse<R>> {
    call.await.map_err(Factory::map_error)
}

#[inline]
pub async fn await_auth<M, R, Fut>(
    factory: &Factory,
    procedure: &str,
    request: M,
    call: impl FnOnce(M, CallOptions) -> Fut,
) -> Result<UnaryResponse<R>>
where
    M: Message + Serialize,
    Fut: Future<Output = std::result::Result<UnaryResponse<R>, ConnectError>>,
{
    let opts = factory.sign_options_async(procedure, &request).await?;
    call(request, opts).await.map_err(Factory::map_error)
}