Skip to main content

objectiveai_api/functions/profiles/computations/
objectiveai.rs

1//! ObjectiveAI API implementation of the Profile computation client.
2
3use crate::ctx;
4use futures::{Stream, TryStreamExt};
5use std::sync::Arc;
6
7/// Computes Profiles via the ObjectiveAI API.
8pub struct ObjectiveAiClient {
9    /// The HTTP client for API requests.
10    pub client: Arc<objectiveai::HttpClient>,
11}
12
13impl ObjectiveAiClient {
14    /// Creates a new ObjectiveAI Profile computation client.
15    pub fn new(client: Arc<objectiveai::HttpClient>) -> Self {
16        Self { client }
17    }
18}
19
20#[async_trait::async_trait]
21impl<CTXEXT> super::Client<CTXEXT> for ObjectiveAiClient
22where
23    CTXEXT: Send + Sync + 'static,
24{
25    async fn create_unary(
26        &self,
27        _ctx: ctx::Context<CTXEXT>,
28        request: Arc<
29            objectiveai::functions::profiles::computations::request::Request,
30        >,
31    ) -> Result<
32        objectiveai::functions::profiles::computations::response::unary::FunctionProfileComputation,
33        objectiveai::error::ResponseError,
34    >{
35        objectiveai::functions::profiles::computations::compute_profile_unary(
36            &self.client,
37            (*request).clone(),
38        )
39        .await
40        .map_err(|e| objectiveai::error::ResponseError::from(&e))
41    }
42
43    async fn create_streaming(
44        &self,
45        _ctx: ctx::Context<CTXEXT>,
46        request: Arc<
47            objectiveai::functions::profiles::computations::request::Request,
48        >,
49    ) -> Result<
50        impl Stream<Item = Result<
51            objectiveai::functions::profiles::computations::response::streaming::FunctionProfileComputationChunk,
52            objectiveai::error::ResponseError,
53        >>
54            + Send
55            + 'static,
56        objectiveai::error::ResponseError,
57    >{
58        let stream = objectiveai::functions::profiles::computations::compute_profile_streaming(
59            &self.client,
60            (*request).clone(),
61        )
62        .await
63        .map_err(|e| objectiveai::error::ResponseError::from(&e))?;
64        Ok(stream.map_err(|e| objectiveai::error::ResponseError::from(&e)))
65    }
66}