lib/ahora/resource.rb in ahora-0.0.3 vs lib/ahora/resource.rb in ahora-0.0.4
- old
+ new
@@ -3,27 +3,39 @@
module Ahora
module Resource
attr_writer :document_parser
def get(url, params = nil)
- connection.run_request(:get, url, nil, nil) do |req|
- req.params.update(params) if params
- yield req if block_given?
+ begin
+ connection.run_request(:get, url, nil, nil) do |req|
+ req.params.update(params) if params
+ yield req if block_given?
+ end
+ rescue => e
+ handle_exception(e)
end
end
# FIXME test
def post(url, body = nil)
- connection.run_request(:post, url, body, nil) do |req|
- yield req if block_given?
+ begin
+ connection.run_request(:post, url, body, nil) do |req|
+ yield req if block_given?
+ end
+ rescue => e
+ handle_exception(e)
end
end
# FIXME test
def put(url, body = nil)
- connection.run_request(:put, url, body, nil) do |req|
- yield req if block_given?
+ begin
+ connection.run_request(:put, url, body, nil) do |req|
+ yield req if block_given?
+ end
+ rescue => e
+ handle_exception(e)
end
end
def connection
Faraday.new(host.dup, connection_options) do |conn|
@@ -62,15 +74,27 @@
end
Collection.new instantiator, document_parser, response
end
private
+
def document_parser
@document_parser ||= XmlParser.method(:parse)
end
def connection_options
(defined?(super) ? super.dup : {}).update \
:headers => headers
end
+
+ def handle_exception(e)
+ case e
+ when Faraday::Error::TimeoutError
+ e.extend Ahora::Error::TimeoutError
+ else
+ e.extend Ahora::Error::ClientError
+ end
+ raise
+ end
+
end
end