module Protip::Transformers::ActiveSupport::TimeWithZoneTransformer

Public Instance Methods

to_message(value, message_class) click to toggle source
# File lib/protip/transformers/active_support/time_with_zone_transformer.rb, line 21
def to_message(value, message_class)
  if !value.is_a?(::ActiveSupport::TimeWithZone) && (value.is_a?(Time) || value.is_a?(DateTime))
    value = ::ActiveSupport::TimeWithZone.new(value.to_time.utc, ::ActiveSupport::TimeZone.new('UTC'))
  end
  raise ArgumentError.new("Expected ActiveSupport::TimeWithZone, received #{value.class.name}") unless value.is_a?(::ActiveSupport::TimeWithZone)

  message_class.new(
    utc_timestamp: value.to_i,
    time_zone_name: value.time_zone.name,
  )
end
to_object(message) click to toggle source
# File lib/protip/transformers/active_support/time_with_zone_transformer.rb, line 14
def to_object(message)
  ActiveSupport::TimeWithZone.new(
    Time.at(message.utc_timestamp).utc,
    ActiveSupport::TimeZone.new(message.time_zone_name)
  )
end
transformable?(message_class) click to toggle source
# File lib/protip/transformers/active_support/time_with_zone_transformer.rb, line 10
def transformable?(message_class)
  message_class == ::Protip::Messages::ActiveSupport::TimeWithZone
end