Sha256: 0687214708ee8dd489babc5ecd9471768e6c26321e8c9792e22987c777981ecd

Contents?: true

Size: 1.3 KB

Versions: 14

Compression:

Stored size: 1.3 KB

Contents

# frozen_string_literal: true
require 'dato/local/entities_repo'
require 'dato/local/items_repo'

module Dato
  module Local
    class Site
      attr_reader :client
      attr_reader :entities_repo
      attr_reader :items_repo

      def initialize(client)
        @client = client
        @entities_repo = EntitiesRepo.new
        @items_repo = ItemsRepo.new(@entities_repo)
      end

      def load
        @entities_repo = EntitiesRepo.new(site, all_items)
        @items_repo = ItemsRepo.new(@entities_repo)
      end

      def entity
        @entities_repo.find_entities_of_type('site').first
      end

      private

      def site
        include = [
          'item_types',
          'item_types.fields'
        ]
        client.request(:get, '/site', include: include)
      end

      def all_items
        items_per_page = 500
        base_response = client.request(:get, '/items', 'page[limit]' => 1)

        pages = (base_response[:meta][:total_count] / items_per_page.to_f).ceil
        base_response[:data] = []

        pages.times do |page|
          base_response[:data] += client.request(
            :get,
            '/items',
            'page[offset]' => items_per_page * page,
            'page[limit]' => items_per_page
          )[:data]
        end

        base_response
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
dato-0.1.20 lib/dato/local/site.rb
dato-0.1.19 lib/dato/local/site.rb
dato-0.1.18 lib/dato/local/site.rb
dato-0.1.17 lib/dato/local/site.rb
dato-0.1.16 lib/dato/local/site.rb
dato-0.1.15 lib/dato/local/site.rb
dato-0.1.14 lib/dato/local/site.rb
dato-0.1.13 lib/dato/local/site.rb
dato-0.1.12 lib/dato/local/site.rb
dato-0.1.11 lib/dato/local/site.rb
dato-0.1.10 lib/dato/local/site.rb
dato-0.1.9 lib/dato/local/site.rb
dato-0.1.8 lib/dato/local/site.rb
dato-0.1.6 lib/dato/local/site.rb