lib/wcc/contentful/model_builder.rb in wcc-contentful-1.3.2 vs lib/wcc/contentful/model_builder.rb in wcc-contentful-1.4.0.rc1

- old
+ new

@@ -61,28 +61,35 @@ ct = content_type_from_raw(raw) if ct != typedef.content_type raise ArgumentError, 'Wrong Content Type - ' \ "'#{raw.dig('sys', 'id')}' is a #{ct}, expected #{typedef.content_type}" end + if raw.dig('sys', 'locale').blank? + raise ArgumentError, 'Model layer cannot represent "locale=*" entries. ' \ + "Please use a specific locale in your query. \n" \ + "(Error occurred with entry id: #{raw.dig('sys', 'id')})" + end + @raw = raw.freeze created_at = raw.dig('sys', 'createdAt') created_at = Time.parse(created_at) if created_at.present? updated_at = raw.dig('sys', 'updatedAt') updated_at = Time.parse(updated_at) if updated_at.present? @sys = WCC::Contentful::Sys.new( raw.dig('sys', 'id'), raw.dig('sys', 'type'), - raw.dig('sys', 'locale') || context.try(:[], :locale) || 'en-US', + raw.dig('sys', 'locale'), raw.dig('sys', 'space', 'sys', 'id'), created_at, updated_at, raw.dig('sys', 'revision'), OpenStruct.new(context).freeze ) typedef.fields.each_value do |f| - raw_value = raw.dig('fields', f.name, @sys.locale) + raw_value = raw.dig('fields', f.name) + if raw_value.present? case f.type # DateTime is intentionally not parsed! # a DateTime can be '2018-09-28', '2018-09-28T17:00:00', or '2018-09-28T17:00:00Z' # depending entirely on the editor interface in Contentful. Trying to parse this