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