use mod_interface::mod_interface;
mod private
{
use crate::
{
client ::Client,
environment ::{ OpenaiEnvironment, EnvironmentInterface },
assistants ::Assistants,
chat ::Chat,
embeddings ::Embeddings,
files ::Files,
fine_tuning ::FineTuning,
images ::Images,
models ::Models,
realtime ::Realtime,
responses ::Responses,
vector_stores ::VectorStores,
};
#[ cfg( feature = "audio" ) ]
use crate::audio::Audio;
#[ cfg( feature = "moderation" ) ]
use crate::moderations::Moderations;
pub trait ClientApiAccessors< E >
where
E : OpenaiEnvironment + EnvironmentInterface + Send + Sync + 'static,
{
fn assistants( &self ) -> Assistants< '_, E >;
#[ cfg( feature = "audio" ) ]
fn audio( &self ) -> Audio< '_, E >;
fn chat( &self ) -> Chat< '_, E >;
fn embeddings( &self ) -> Embeddings< '_, E >;
fn files( &self ) -> Files< '_, E >;
fn fine_tuning( &self ) -> FineTuning< '_, E >;
fn images( &self ) -> Images< '_, E >;
fn models( &self ) -> Models< '_, E >;
#[ cfg( feature = "moderation" ) ]
fn moderations( &self ) -> Moderations< '_, E >;
fn realtime( &self ) -> Realtime< '_, E >;
fn responses( &self ) -> Responses< '_, E >;
fn vector_stores( &self ) -> VectorStores< '_, E >;
}
impl< E > ClientApiAccessors< E > for Client< E >
where
E : OpenaiEnvironment + EnvironmentInterface + Send + Sync + 'static,
{
#[ inline ]
fn assistants( &self ) -> Assistants< '_, E >
{
Assistants::new( self )
}
#[ inline ]
#[ cfg( feature = "audio" ) ]
fn audio( &self ) -> Audio< '_, E >
{
Audio::new( self )
}
#[ inline ]
fn chat( &self ) -> Chat< '_, E >
{
Chat::new( self )
}
#[ inline ]
fn embeddings( &self ) -> Embeddings< '_, E >
{
Embeddings::new( self )
}
#[ inline ]
fn files( &self ) -> Files< '_, E >
{
Files::new( self )
}
#[ inline ]
fn fine_tuning( &self ) -> FineTuning< '_, E >
{
FineTuning::new( self )
}
#[ inline ]
fn images( &self ) -> Images< '_, E >
{
Images::new( self )
}
#[ inline ]
fn models( &self ) -> Models< '_, E >
{
Models::new( self )
}
#[ inline ]
#[ cfg( feature = "moderation" ) ]
fn moderations( &self ) -> Moderations< '_, E >
{
Moderations::new( self )
}
#[ inline ]
fn realtime( &self ) -> Realtime< '_, E >
{
Realtime::new( self )
}
#[ inline ]
fn responses( &self ) -> Responses< '_, E >
{
Responses::new( self )
}
#[ inline ]
fn vector_stores( &self ) -> VectorStores< '_, E >
{
VectorStores::new( self )
}
}
}
mod_interface!
{
exposed use
{
ClientApiAccessors,
};
}