Exception: Poodle::NetworkError
- Defined in:
- lib/poodle/errors/network_error.rb
Overview
Exception raised when network or HTTP errors occur
Instance Attribute Summary collapse
-
#original_error ⇒ Exception?
readonly
The original exception that caused this error.
Attributes inherited from Error
Class Method Summary collapse
-
.connection_failed(url, original_error: nil) ⇒ NetworkError
Create a NetworkError for connection failure.
-
.connection_timeout(timeout) ⇒ NetworkError
Create a NetworkError for connection timeout.
-
.dns_resolution_failed(host) ⇒ NetworkError
Create a NetworkError for DNS resolution failure.
-
.http_error(status_code, message = "") ⇒ NetworkError
Create a NetworkError for HTTP errors.
-
.malformed_response(response = "") ⇒ NetworkError
Create a NetworkError for malformed response.
-
.ssl_error(message) ⇒ NetworkError
Create a NetworkError for SSL/TLS errors.
Instance Method Summary collapse
-
#initialize(message = "Network error occurred", original_error: nil, context: {}, status_code: nil) ⇒ NetworkError
constructor
Initialize a new NetworkError.
Methods inherited from Error
Constructor Details
#initialize(message = "Network error occurred", original_error: nil, context: {}, status_code: nil) ⇒ NetworkError
Initialize a new NetworkError
25 26 27 28 |
# File 'lib/poodle/errors/network_error.rb', line 25 def initialize( = "Network error occurred", original_error: nil, context: {}, status_code: nil) @original_error = original_error super(, context: context, status_code: status_code) end |
Instance Attribute Details
#original_error ⇒ Exception? (readonly)
Returns the original exception that caused this error.
17 18 19 |
# File 'lib/poodle/errors/network_error.rb', line 17 def original_error @original_error end |
Class Method Details
.connection_failed(url, original_error: nil) ⇒ NetworkError
Create a NetworkError for connection failure
47 48 49 50 51 52 53 |
# File 'lib/poodle/errors/network_error.rb', line 47 def self.connection_failed(url, original_error: nil) new( "Failed to connect to #{url}", original_error: original_error, context: { url: url, error_type: "connection_failed" } ) end |
.connection_timeout(timeout) ⇒ NetworkError
Create a NetworkError for connection timeout
34 35 36 37 38 39 40 |
# File 'lib/poodle/errors/network_error.rb', line 34 def self.connection_timeout(timeout) new( "Connection timeout after #{timeout} seconds", context: { timeout: timeout, error_type: "connection_timeout" }, status_code: 408 ) end |
.dns_resolution_failed(host) ⇒ NetworkError
Create a NetworkError for DNS resolution failure
59 60 61 62 63 64 |
# File 'lib/poodle/errors/network_error.rb', line 59 def self.dns_resolution_failed(host) new( "DNS resolution failed for host: #{host}", context: { host: host, error_type: "dns_resolution_failed" } ) end |
.http_error(status_code, message = "") ⇒ NetworkError
Create a NetworkError for HTTP errors
82 83 84 85 86 87 88 89 90 91 |
# File 'lib/poodle/errors/network_error.rb', line 82 def self.http_error(status_code, = "") = "HTTP error occurred with status code: #{status_code}" = .empty? ? : new( , context: { error_type: "http_error" }, status_code: status_code ) end |
.malformed_response(response = "") ⇒ NetworkError
Create a NetworkError for malformed response
97 98 99 100 101 102 |
# File 'lib/poodle/errors/network_error.rb', line 97 def self.malformed_response(response = "") new( "Received malformed response from server", context: { response: response, error_type: "malformed_response" } ) end |
.ssl_error(message) ⇒ NetworkError
Create a NetworkError for SSL/TLS errors
70 71 72 73 74 75 |
# File 'lib/poodle/errors/network_error.rb', line 70 def self.ssl_error() new( "SSL/TLS error: #{message}", context: { error_type: "ssl_error" } ) end |