From 23ecfc6fa5ae4913e5cd17b7d58432d1f88d780c Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Mon, 10 Aug 2015 09:48:57 +0200 Subject: transfer to new git project started --- lib/error.rb | 79 +++++++++++++----------------------------------------------- 1 file changed, 17 insertions(+), 62 deletions(-) (limited to 'lib/error.rb') diff --git a/lib/error.rb b/lib/error.rb index 12e22ff..8fe8a1e 100644 --- a/lib/error.rb +++ b/lib/error.rb @@ -1,36 +1,19 @@ -require 'open4' - -# add additional fields to Exception class to format errors according to OT-API module OpenToxError - attr_accessor :http_code, :uri, :error_cause, :metadata - def initialize(message=nil, uri=nil, cause=nil) + attr_accessor :http_code, :message, :cause + def initialize message=nil message = message.to_s.gsub(/\A"|"\Z/, '') if message # remove quotes - @error_cause = cause ? OpenToxError::cut_backtrace(cause) : short_backtrace - super message - @uri = uri.to_s.sub(%r{//.*:.*@},'//') # remove credentials from uri - @http_code ||= 500 - @metadata = { - :type => "ErrorReport", - :actor => @uri, - :message => message.to_s, - :statusCode => @http_code, - :errorCode => self.class.to_s, - :errorCause => @error_cause, - } - $logger.error("\n"+JSON.pretty_generate(@metadata)) - end - -=begin - # this method defines what is used for to_yaml (override to skip large @rdf graph) - def encode_with coder - @rdf.each do |statement| - coder[statement.predicate.fragment.to_s] = statement.object.to_s - end + @http_code ||= 500 + @message = message.to_s + @cause = cut_backtrace(caller) + $logger.error("\n"+JSON.pretty_generate({ + :http_code => @http_code, + :message => @message, + :cause => @cause + })) end -=end - def self.cut_backtrace(trace) + def cut_backtrace(trace) if trace.is_a?(Array) cut_index = trace.find_index{|line| line.match(/sinatra|minitest/)} cut_index ||= trace.size @@ -41,34 +24,6 @@ module OpenToxError trace end end - - def short_backtrace - backtrace = caller.collect{|line| line unless line =~ /#{File.dirname(__FILE__)}/}.compact - OpenToxError::cut_backtrace(backtrace) - end - -=begin - RDF_FORMATS.each do |format| - # rdf serialization methods for all formats e.g. to_rdfxml - send :define_method, "to_#{format}".to_sym do - RDF::Writer.for(format).buffer do |writer| - @rdf.each{|statement| writer << statement} if @rdf - end - end - end - - def to_turtle # redefine to use prefixes (not supported by RDF::Writer) - prefixes = {:rdf => "http://www.w3.org/1999/02/22-rdf-syntax-ns#"} - ['OT', 'DC', 'XSD', 'OLO'].each{|p| prefixes[p.downcase.to_sym] = eval("RDF::#{p}.to_s") } - RDF::Turtle::Writer.for(:turtle).buffer(:prefixes => prefixes) do |writer| - @rdf.each{|statement| writer << statement} if @rdf - end - end -=end - - def to_json - @metadata.to_json - end end @@ -76,7 +31,7 @@ class RuntimeError include OpenToxError end -# clutters log file with library errors +# clutters log file with library errors #class NoMethodError #include OpenToxError #end @@ -86,9 +41,9 @@ module OpenTox class Error < RuntimeError include OpenToxError - def initialize(code, message=nil, uri=nil, cause=nil) + def initialize(code, message=nil) @http_code = code - super message, uri, cause + super message end end @@ -96,15 +51,15 @@ module OpenTox RestClientWrapper.known_errors.each do |error| # create error classes c = Class.new Error do - define_method :initialize do |message=nil, uri=nil, cause=nil| - super error[:code], message, uri, cause + define_method :initialize do |message=nil| + super error[:code], message end end OpenTox.const_set error[:class],c # define global methods for raising errors, eg. bad_request_error Object.send(:define_method, error[:method]) do |message,uri=nil,cause=nil| - raise c.new(message, uri, cause) + raise c.new(message) end end -- cgit v1.2.3