This commit is contained in:
Brandon Thomas committed 2026-02-23 16:33:53 +07:00
1 parent 4704d57e17
commit 364a7e4e9c
5 files changed
+58 -2

No files matched your search

@@ -2,3 +2,4 @@ pub mod multi_router_client;
pub mod multi_router_client_builder;
pub mod request_mismatch_mitigation_strategy;
pub mod router_artcraft_client;
pub mod router_client;
@@ -0,0 +1,13 @@
use crate::client::router_artcraft_client::RouterArtcraftClient;
use crate::errors::client_error::{ClientError, ClientType};
pub struct MultiRouterClient {
pub(crate) artcraft_client: Option<RouterArtcraftClient>,
}
impl MultiRouterClient {
pub fn get_artcraft_client_ref(&self) -> Result<&RouterArtcraftClient, ClientError> {
self.artcraft_client.as_ref()
.ok_or(ClientError::ClientNotConfigured(ClientType::Artcraft))
}
}
@@ -0,0 +1,25 @@
use crate::client::router_artcraft_client::RouterArtcraftClient;
use crate::client::multi_router_client::MultiRouterClient;
pub struct MultiRouterClientBuilder {
artcraft_client: Option<RouterArtcraftClient>,
}
impl MultiRouterClientBuilder {
pub fn new() -> Self {
Self {
artcraft_client: None,
}
}
pub fn set_artcraft_client(mut self, client: RouterArtcraftClient) -> Self {
self.artcraft_client = Some(client);
self
}
pub fn build(self) -> MultiRouterClient {
MultiRouterClient {
artcraft_client: self.artcraft_client,
}
}
}
@@ -0,0 +1,17 @@
use crate::client::multi_router_client::MultiRouterClient;
use crate::client::router_artcraft_client::RouterArtcraftClient;
use crate::errors::client_error::ClientError;
pub enum RouterClient {
Multi(MultiRouterClient),
Artcraft(RouterArtcraftClient),
}
impl RouterClient {
pub fn get_artcraft_client_ref(&self) -> Result<&RouterArtcraftClient, ClientError> {
match self {
RouterClient::Artcraft(client) => Ok(client),
RouterClient::Multi(multi) => multi.get_artcraft_client_ref(),
}
}
}
@@ -4,7 +4,7 @@ use crate::api::common_video_model::CommonVideoModel;
use crate::api::image_list_ref::ImageListRef;
use crate::api::image_ref::ImageRef;
use crate::api::provider::Provider;
use crate::client::multi_router_client::MultiRouterClient;
use crate::client::router_client::RouterClient;
use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy;
pub struct GenerateVideoRequest<'a> {
@@ -53,7 +53,7 @@ pub struct GenerateVideoRequest<'a> {
pub idempotency_token: Option<&'a str>,
/// The polymorphic router client, which can dispatch to multiple providers.
pub client: &'a MultiRouterClient,
pub client: &'a RouterClient,
}
impl <'a> GenerateVideoRequest<'a> {