class ContentfulMiddleman::Instance

Constants

API_PREVIEW_URL

Public Class Methods

new(extension) click to toggle source
# File lib/contentful_middleman/instance.rb, line 5
def initialize(extension)
  @extension = extension
end

Public Instance Methods

client() click to toggle source
# File lib/contentful_middleman/instance.rb, line 41
def client
  @client ||= Contentful::Client.new(client_options)
end
content_types_ids_to_mappers() click to toggle source
# File lib/contentful_middleman/instance.rb, line 21
def content_types_ids_to_mappers
  @content_types_mappers ||= options.content_types.reduce({}) do |acc, (content_type_id, config)|
    content_type_mapper  = config.fetch(:mapper)
    acc[content_type_id] = content_type_mapper
    acc
  end
end
content_types_ids_to_names() click to toggle source
# File lib/contentful_middleman/instance.rb, line 29
def content_types_ids_to_names
  @content_types_names ||= options.content_types.reduce({}) do |acc, (content_type_id, config)|
    content_type_name    = config.fetch(:name)
    acc[content_type_id] = content_type_name
    acc
  end
end
entries() click to toggle source
# File lib/contentful_middleman/instance.rb, line 9
def entries
  if options.all_entries
    all_entries(options.cda_query)
  else
    client.entries(options.cda_query)
  end
end
options() click to toggle source
# File lib/contentful_middleman/instance.rb, line 37
def options
  @extension.options
end
space_name() click to toggle source
# File lib/contentful_middleman/instance.rb, line 17
def space_name
  @space_name ||= options.space.fetch(:name)
end

Private Instance Methods

all_entries(cda_query) click to toggle source
# File lib/contentful_middleman/instance.rb, line 47
def all_entries(cda_query)
  all = []
  query = cda_query.clone
  query[:order] = 'sys.createdAt' unless query.key?(:order)
  num_entries = client.entries(limit: 1).total

  ((num_entries / options.all_entries_page_size) + 1).times do |i|
    query[:limit] = options.all_entries_page_size
    query[:skip] = i * options.all_entries_page_size
    page = client.entries(query)
    page.each { |entry| all << entry }
  end

  all
end
client_options() click to toggle source
# File lib/contentful_middleman/instance.rb, line 63
def client_options
  client_options = {
      access_token:     options.access_token,
      space:            options.space.fetch(:id),
      dynamic_entries:  :auto,
      raise_errors:     true,
      default_locale:   options.default_locale,
      integration_name: 'middleman.v4',
      integration_version: ContentfulMiddleman::VERSION
  }.merge(options.client_options)

  client_options[:api_url] = API_PREVIEW_URL if options.use_preview_api
  client_options
end