lib/timber/events.rb in timber-1.0.13 vs lib/timber/events.rb in timber-1.1.0
- old
+ new
@@ -1,34 +1,39 @@
require "timber/events/controller_call"
require "timber/events/custom"
require "timber/events/exception"
-require "timber/events/http_request"
-require "timber/events/http_response"
+require "timber/events/http_server_request"
+require "timber/events/http_server_response"
require "timber/events/sql_query"
require "timber/events/template_render"
module Timber
+ # Namespace for all Timber supported events.
module Events
# Protocol for casting objects into a `Timber::Event`.
#
# @example Casting a hash
# Timber::Events.build({type: :custom_event, message: "My log message", data: {my: "data"}})
def self.build(obj)
if obj.is_a?(::Timber::Event)
obj
elsif obj.respond_to?(:to_timber_event)
obj.to_timber_event
- elsif obj.is_a?(Hash) && obj.key?(:message) && obj.key?(:type) && obj.key?(:data)
+ elsif obj.is_a?(Hash) && obj.key?(:message) && obj.length == 2
+ event = obj.select { |k,v| k != :message }
+ type = event.keys.first
+ data = event.values.first
+
Events::Custom.new(
- type: obj[:type],
+ type: type,
message: obj[:message],
- data: obj[:data]
+ data: data
)
elsif obj.is_a?(Struct) && obj.respond_to?(:message) && obj.respond_to?(:type)
Events::Custom.new(
type: obj.type,
message: obj.message,
- data: obj.respond_to?(:hash) ? obj.hash : obj.to_h # ruby 1.9.3 does not have to_h
+ data: obj.respond_to?(:to_h) ? obj.to_h : Timber::Util::Struct.to_hash(obj) # ruby 1.9.3 does not have to_h :(
)
else
nil
end
end
\ No newline at end of file