Improve handling of failed requests
This adds a custom exception class with an error type that can be more easily used by clients. It also explicitly handles failed connections as such. closes #9
This commit is contained in:
11
lib/manifique/errors.rb
Normal file
11
lib/manifique/errors.rb
Normal file
@@ -0,0 +1,11 @@
|
||||
module Manifique
|
||||
class Error < ::StandardError
|
||||
attr_reader :type, :url
|
||||
|
||||
def initialize(msg="Encountered an error", type="generic", url)
|
||||
@type = type
|
||||
@url = url
|
||||
super(msg)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,8 +1,9 @@
|
||||
require 'json'
|
||||
require 'faraday'
|
||||
require 'faraday_middleware'
|
||||
require "nokogiri"
|
||||
require 'nokogiri'
|
||||
require 'manifique/metadata'
|
||||
require 'manifique/errors'
|
||||
|
||||
module Manifique
|
||||
class WebClient
|
||||
@@ -160,8 +161,10 @@ module Manifique
|
||||
if res.status < 400
|
||||
res
|
||||
else
|
||||
raise "Could not fetch #{url} successfully (#{res.status})"
|
||||
raise Manifique::Error.new "Failed with HTTP status #{res.status}", "http_#{res.status}", url
|
||||
end
|
||||
rescue Faraday::ConnectionFailed, Faraday::TimeoutError, Faraday::SSLError => e
|
||||
raise Manifique::Error.new "Failed to connect", "connection_failed", url
|
||||
end
|
||||
|
||||
def discover_web_manifest_url(html)
|
||||
|
||||
Reference in New Issue
Block a user