Sha256: d5abe4122b56c96c4e541a1d3b20316f763a07ac49358a6f79088debace0ec5d
Contents?: true
Size: 1.69 KB
Versions: 1
Compression:
Stored size: 1.69 KB
Contents
module ZendeskAPI # @private module Rescue def self.included(klass) klass.extend(Methods) klass.send(:include, Methods) end # @private module Methods def log_error(e, method = false) if logger = (@client ? @client.config.logger : Kernel) logger.warn "#{self} - #{method}" if method logger.warn e.message logger.warn e.backtrace.join("\n") logger.warn "\t#{e.response[:body].inspect}" if e.response end end def attach_error(e) return unless e.response if error = e.response[:body] if error.is_a?(Hash) error = Hashie::Mash.new(error) self.error_message = (error.error || error.description) if respond_to?("error_message=") end self.error = error if respond_to?("error=") end end def rescue_client_error(*args) opts = args.last.is_a?(Hash) ? args.pop : {} if args.any? args.each do |method| class_eval("alias :orig_#{method} :#{method}") define_method method do |*args| begin send("orig_#{method}", *args) rescue Faraday::Error::ClientError => e log_error(e, method) attach_error(e) opts[:with].respond_to?(:call) ? opts[:with].call : opts[:with] end end end elsif block_given? begin yield rescue Faraday::Error::ClientError => e log_error(e) attach_error(e) opts[:with].respond_to?(:call) ? opts[:with].call : opts[:with] end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
zendesk_api-0.2.4 | lib/zendesk_api/rescue.rb |