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