Class: Protip::Transformers::DeprecatedTransformer::TimeWithZoneTransformer

Inherits:
Object
  • Object
show all
Includes:
Protip::Transformer
Defined in:
lib/protip/transformers/deprecated_transformer.rb

Instance Method Summary collapse

Instance Method Details

#to_message(object, field) ⇒ Object

Raises:

  • (ArgumentError)


76
77
78
79
80
81
82
83
84
85
86
# File 'lib/protip/transformers/deprecated_transformer.rb', line 76

def to_message(object, field)
  if !object.is_a?(::ActiveSupport::TimeWithZone) && (object.is_a?(Time) || object.is_a?(DateTime))
    object = ::ActiveSupport::TimeWithZone.new(object.to_time.utc, ::ActiveSupport::TimeZone.new('UTC'))
  end
  raise ArgumentError.new("Expected ActiveSupport::TimeWithZone, received #{object.class.name}") unless object.is_a?(::ActiveSupport::TimeWithZone)

  field.subtype.msgclass.new(
    utc_timestamp: object.to_i,
    time_zone_name: object.time_zone.name,
  )
end

#to_object(message, field) ⇒ Object



70
71
72
73
74
75
# File 'lib/protip/transformers/deprecated_transformer.rb', line 70

def to_object(message, field)
  ActiveSupport::TimeWithZone.new(
    Time.at(message.utc_timestamp).utc,
    ActiveSupport::TimeZone.new(message.time_zone_name)
  )
end