Commit a6a59c6

mo khan <mo@mokhan.ca>
2025-10-08 19:20:47
refactor: change error handling for other providers
1 parent 65fd985
Changed files (4)
lib/net/llm/anthropic.rb
@@ -48,8 +48,11 @@ module Net
       end
 
       def handle_response(response)
-        raise "HTTP #{response.code}: #{response.body}" unless response.is_a?(Net::HTTPSuccess)
-        JSON.parse(response.body)
+        if response.is_a?(Net::HTTPSuccess)
+          JSON.parse(response.body)
+        else
+          { "code" => response.code, "body" => response.body }
+        end
       end
 
       def stream_request(url, payload, &block)
lib/net/llm/ollama.rb
@@ -64,8 +64,11 @@ module Net
       end
 
       def handle_response(response)
-        raise "HTTP #{response.code}: #{response.body}" unless response.is_a?(Net::HTTPSuccess)
-        JSON.parse(response.body)
+        if response.is_a?(Net::HTTPSuccess)
+          JSON.parse(response.body)
+        else
+          { "code" => response.code, "body" => response.body }
+        end
       end
 
       def stream_request(url, payload, &block)
spec/net/llm/anthropic_spec.rb
@@ -81,7 +81,9 @@ RSpec.describe Net::Llm::Anthropic do
         stub_request(:post, "https://api.anthropic.com/v1/messages")
           .to_return(status: 401, body: "Unauthorized")
 
-        expect { client.messages(messages) }.to raise_error(/HTTP 401/)
+        result = client.messages(messages)
+        expect(result["code"]).to eq("401")
+        expect(result["body"]).to eq("Unauthorized")
       end
     end
 
spec/net/llm/ollama_spec.rb
@@ -57,7 +57,9 @@ RSpec.describe Net::Llm::Ollama do
         stub_request(:post, "http://localhost:11434/api/chat")
           .to_return(status: 500, body: "Server error")
 
-        expect { client.chat(messages) }.to raise_error(/HTTP 500/)
+        result = client.chat(messages)
+        expect(result["code"]).to eq("500")
+        expect(result["body"]).to eq("Server error")
       end
     end