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:
2020-06-09 10:48:26 +02:00
parent c5d5c123a6
commit 4c36da46fe
3 changed files with 62 additions and 4 deletions

11
lib/manifique/errors.rb Normal file
View 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

View File

@@ -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)