]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/aviator/feature/faraday/response/raise_error.rb
add aimonb/aviator to 3rdparty
[dsa-puppet.git] / 3rdparty / modules / aviator / feature / faraday / response / raise_error.rb
diff --git a/3rdparty/modules/aviator/feature/faraday/response/raise_error.rb b/3rdparty/modules/aviator/feature/faraday/response/raise_error.rb
new file mode 100644 (file)
index 0000000..437762b
--- /dev/null
@@ -0,0 +1,21 @@
+module Faraday
+  class Response::RaiseError < Response::Middleware
+    ClientErrorStatuses = 400...600
+
+    def on_complete(env)
+      case env[:status]
+      when 404
+        raise Faraday::Error::ResourceNotFound, response_values(env)
+      when 407
+        # mimic the behavior that we get with proxy requests with HTTPS
+        raise Faraday::Error::ConnectionFailed, %{407 "Proxy Authentication Required "}
+      when ClientErrorStatuses
+        raise Faraday::Error::ClientError, response_values(env)
+      end
+    end
+
+    def response_values(env)
+      {:status => env.status, :headers => env.response_headers, :body => env.body}
+    end
+  end
+end