Handle failed requests

This commit is contained in:
Basti 2018-06-26 18:29:30 -07:00
parent adbee52e52
commit bd6f74f09f
5 changed files with 49 additions and 5 deletions

View File

@ -10,17 +10,33 @@ PATH
GEM GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
specs: specs:
addressable (2.5.2)
public_suffix (>= 2.0.2, < 4.0)
coderay (1.1.2)
crack (0.4.3)
safe_yaml (~> 1.0.0)
faraday (0.15.2) faraday (0.15.2)
multipart-post (>= 1.2, < 3) multipart-post (>= 1.2, < 3)
faraday_middleware (0.12.2) faraday_middleware (0.12.2)
faraday (>= 0.7.4, < 1.0) faraday (>= 0.7.4, < 1.0)
hashdiff (0.3.7)
method_source (0.9.0)
mini_portile2 (2.3.0) mini_portile2 (2.3.0)
minitest (5.11.3) minitest (5.11.3)
multipart-post (2.0.0) multipart-post (2.0.0)
nitlink (1.1.0) nitlink (1.1.0)
nokogiri (1.8.3) nokogiri (1.8.3)
mini_portile2 (~> 2.3.0) mini_portile2 (~> 2.3.0)
pry (0.11.3)
coderay (~> 1.1.0)
method_source (~> 0.9.0)
public_suffix (3.0.2)
rake (10.5.0) rake (10.5.0)
safe_yaml (1.0.4)
webmock (3.4.2)
addressable (>= 2.3.6)
crack (>= 0.3.2)
hashdiff
PLATFORMS PLATFORMS
ruby ruby
@ -29,7 +45,9 @@ DEPENDENCIES
bundler (~> 1.16) bundler (~> 1.16)
manifique! manifique!
minitest (~> 5.0) minitest (~> 5.0)
pry (~> 0.11.3)
rake (~> 10.0) rake (~> 10.0)
webmock (~> 3.4.2)
BUNDLED WITH BUNDLED WITH
1.16.2 1.16.2

View File

@ -3,6 +3,8 @@ require 'faraday_middleware'
require "nokogiri" require "nokogiri"
require 'nitlink/response' require 'nitlink/response'
require 'pry'
module Manifique module Manifique
class WebClient class WebClient
def initialize(options) def initialize(options)
@ -11,12 +13,21 @@ module Manifique
end end
def fetch_web_manifest def fetch_web_manifest
do_get_request @url
# binding.pry
end
private
def do_get_request(url)
conn = Faraday.new do |b| conn = Faraday.new do |b|
b.use FaradayMiddleware::FollowRedirects b.use FaradayMiddleware::FollowRedirects
b.adapter :net_http b.adapter :net_http
end end
res = conn.get @url res = conn.get url
raise res.inspect if res.status > 400
raise "Could not fetch #{url} successfully (#{res.status})"
end
end end
end end
end end

View File

@ -25,6 +25,8 @@ Gem::Specification.new do |spec|
spec.add_development_dependency "bundler", "~> 1.16" spec.add_development_dependency "bundler", "~> 1.16"
spec.add_development_dependency "rake", "~> 10.0" spec.add_development_dependency "rake", "~> 10.0"
spec.add_development_dependency "minitest", "~> 5.0" spec.add_development_dependency "minitest", "~> 5.0"
spec.add_development_dependency "webmock", "~> 3.4.2"
spec.add_development_dependency "pry", "~> 0.11.3"
spec.add_runtime_dependency "faraday", "~> 0.15.2" spec.add_runtime_dependency "faraday", "~> 0.15.2"
spec.add_runtime_dependency "faraday_middleware", "~> 0.12.2" spec.add_runtime_dependency "faraday_middleware", "~> 0.12.2"

View File

@ -1,6 +1,7 @@
require "test_helper" require "test_helper"
class ManifiqueTest < Minitest::Test class ManifiqueTest < Minitest::Test
def test_that_it_has_a_version_number def test_that_it_has_a_version_number
refute_nil ::Manifique::VERSION refute_nil ::Manifique::VERSION
end end
@ -13,8 +14,19 @@ class ManifiqueTest < Minitest::Test
assert_raises(RuntimeError) { Manifique::Agent.new(url: "htp:/foo.com") } assert_raises(RuntimeError) { Manifique::Agent.new(url: "htp:/foo.com") }
end end
def test_fetch_metadata def test_fetch_metadata_request_404
agent = Manifique::Agent.new(url: 'https://example.com') stub_request(:get, "http://example.com/404").
assert_equal agent.fetch_metadata, 'https://example.com' to_return(body: "", status: 404, headers: {})
agent = Manifique::Agent.new(url: 'http://example.com/404')
assert_raises(RuntimeError) { agent.fetch_metadata }
end
def test_fetch_metadata_request_500
stub_request(:get, "http://example.com/500").
to_return(body: "", status: 500, headers: {})
agent = Manifique::Agent.new(url: 'http://example.com/500')
assert_raises(RuntimeError) { agent.fetch_metadata }
end end
end end

View File

@ -2,3 +2,4 @@ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
require "manifique" require "manifique"
require "minitest/autorun" require "minitest/autorun"
require "webmock/minitest"