mod private
{
use error_tools::dependency::thiserror;
#[ derive( Debug, Clone, PartialEq, thiserror::Error ) ]
#[ non_exhaustive ]
pub enum OpenAiCompatError
{
#[ error( "API error : {0}" ) ]
Api( String ),
#[ error( "HTTP error : {0}" ) ]
Http( String ),
#[ error( "Network error : {0}" ) ]
Network( String ),
#[ error( "Timeout : {0}" ) ]
Timeout( String ),
#[ error( "Deserialisation error : {0}" ) ]
Deserialise( String ),
#[ error( "Invalid API key : {0}" ) ]
InvalidApiKey( String ),
#[ error( "Environment error : {0}" ) ]
Environment( String ),
}
pub type Result< T > = error_tools::untyped::Result< T >;
impl From< reqwest::Error > for OpenAiCompatError
{
#[ inline ]
fn from( e : reqwest::Error ) -> Self
{
if e.is_timeout()
{
Self::Timeout( e.to_string() )
}
else if e.is_connect()
{
Self::Network( e.to_string() )
}
else
{
Self::Http( e.to_string() )
}
}
}
impl From< serde_json::Error > for OpenAiCompatError
{
#[ inline ]
fn from( e : serde_json::Error ) -> Self
{
Self::Deserialise( e.to_string() )
}
}
impl From< reqwest::header::InvalidHeaderValue > for OpenAiCompatError
{
#[ inline ]
fn from( e : reqwest::header::InvalidHeaderValue ) -> Self
{
Self::InvalidApiKey( e.to_string() )
}
}
}
crate::mod_interface!
{
exposed use
{
OpenAiCompatError,
Result,
};
}