From dc17a0a2983aed47bae17e518b7ce34ff24fe3f2 Mon Sep 17 00:00:00 2001 From: Zach Gollwitzer Date: Fri, 28 Mar 2025 17:53:04 -0400 Subject: [PATCH] Make provider errors more specific --- app/models/provider.rb | 5 ++--- app/models/provider/openai.rb | 3 +++ app/models/provider/synth.rb | 3 +++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/models/provider.rb b/app/models/provider.rb index f188231e..c775d94b 100644 --- a/app/models/provider.rb +++ b/app/models/provider.rb @@ -61,13 +61,12 @@ class Provider # Override to set class-level error transformation for methods using `with_provider_response` def default_error_transformer(error) if error.is_a?(Faraday::Error) - Error.new( + self.class::Error.new( error.message, details: error.response&.dig(:body), - provider: self.class.name ) else - Error.new(error.message, provider: self.class.name) + self.class::Error.new(error.message) end end diff --git a/app/models/provider/openai.rb b/app/models/provider/openai.rb index fb515fd7..bf5fad05 100644 --- a/app/models/provider/openai.rb +++ b/app/models/provider/openai.rb @@ -1,6 +1,9 @@ class Provider::Openai < Provider include LlmProvider + # Subclass so errors caught in this provider are raised as Provider::Openai::Error + Error = Class.new(Provider::Error) + MODELS = %w[gpt-4o] def initialize(access_token) diff --git a/app/models/provider/synth.rb b/app/models/provider/synth.rb index 81d68ed5..17653d65 100644 --- a/app/models/provider/synth.rb +++ b/app/models/provider/synth.rb @@ -1,6 +1,9 @@ class Provider::Synth < Provider include ExchangeRateProvider, SecurityProvider + # Subclass so errors caught in this provider are raised as Provider::Synth::Error + Error = Class.new(Provider::Error) + def initialize(api_key) @api_key = api_key end