Class: FmRest::V1::TypeCoercer

Inherits:
Faraday::Middleware
  • Object
show all
Defined in:
lib/fmrest/v1/type_coercer.rb

Constant Summary collapse

JULIAN_ZERO_DAY =

We use this date to represent a FileMaker time for consistency with ginjo-rfm

"-4712/1/1"
COERCE_HYBRID =
[:hybrid, "hybrid", true].freeze
COERCE_FULL =
[:full, "full"].freeze

Instance Method Summary collapse

Constructor Details

#initialize(app, settings) ⇒ TypeCoercer

Returns a new instance of TypeCoercer.

Parameters:



17
18
19
20
# File 'lib/fmrest/v1/type_coercer.rb', line 17

def initialize(app, settings)
  super(app)
  @settings = settings
end

Instance Method Details

#on_complete(env) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/fmrest/v1/type_coercer.rb', line 22

def on_complete(env)
  return unless enabled?
  return unless env.body.is_a?(Hash)

  data = env.body.dig("response", "data") || env.body.dig(:response, :data)

  return unless data

  data.each do |record|
    field_data = record["fieldData"] || record[:fieldData]
    portal_data = record["portalData"] || record[:portalData]

    coerce_fields(field_data)

    portal_data.try(:each_value) do |portal_records|
      portal_records.each do |pr|
        coerce_fields(pr)
      end
    end
  end
end