module Contentful::Management::Support

Utility methods used by the contentful management gem

Public Class Methods

base_path_for(resource_name) click to toggle source

Returns the path for a specified resource name.

# File lib/contentful/management/support.rb, line 37
def base_path_for(resource_name)
  {
    'Role' => 'roles',
    'Space' => 'spaces',
    'Asset' => 'assets',
    'Entry' => 'entries',
    'Locale' => 'locales',
    'Upload' => 'uploads',
    'ApiKey' => 'api_keys',
    'UIExtension' => 'extensions',
    'Environment' => 'environments',
    'ContentType' => 'content_types',
    'PreviewApiKey' => 'preview_api_keys',
    'SpaceMembership' => 'space_memberships'
  }[resource_name]
end
deep_hash_merge(query_hash, attribute_hash) click to toggle source

Merges two hashes with recursion

# File lib/contentful/management/support.rb, line 13
def deep_hash_merge(query_hash, attribute_hash)
  query_hash.merge(attribute_hash) do |_key, oldval, newval|
    oldval = oldval.to_hash if oldval.respond_to?(:to_hash)
    newval = newval.to_hash if newval.respond_to?(:to_hash)
    oldval.class.to_s == 'Hash' && newval.class.to_s == 'Hash' ? deep_hash_merge(oldval, newval) : newval
  end
end
normalize_select!(parameters) click to toggle source

If the query contains the :select operator, we enforce :sys properties. The SDK requires sys.type to function properly, but as other of our SDKs require more parts of the :sys properties, we decided that every SDK should include the complete :sys block to provide consistency accross our SDKs.

# File lib/contentful/management/support.rb, line 25
def normalize_select!(parameters)
  return parameters unless parameters.key?(:select)

  parameters[:select] = parameters[:select].split(',').map(&:strip) if parameters[:select].is_a? String
  parameters[:select] = parameters[:select].reject { |p| p.start_with?('sys.') }
  parameters[:select] << 'sys' unless parameters[:select].include?('sys')
  parameters[:select] = parameters[:select].join(',')

  parameters
end
snakify(object) click to toggle source

Transforms CamelCase into snake_case (taken from zucker)

# File lib/contentful/management/support.rb, line 7
def snakify(object)
  snake = String(object).gsub(/(?<!^)[A-Z]/) { "_#{$&}" }
  snake.downcase
end