Sha256: e0c260f669514dd60b0895f42a2afbefed529af4131b0bfd21502221c3611d49

Contents?: true

Size: 1.22 KB

Versions: 2

Compression:

Stored size: 1.22 KB

Contents

# frozen_string_literal: true

require_relative 'resource_requester'

module Contentful
  module Management
    # Wrapper for Environment Association Methods
    # @private
    module EnvironmentAssociationMethodsFactory
      attr_reader :environment

      def initialize(environment)
        @environment = environment
      end

      def all(params = {})
        associated_class.all(environment.client, environment.sys[:space].id, environment.id, params)
      end

      def find(id)
        associated_class.find(environment.client, environment.sys[:space].id, environment.id, id)
      end

      def create(attributes = {})
        associated_class.create(environment.client, environment.sys[:space].id, environment.id, attributes)
      end

      def new
        object = associated_class.new
        object.sys[:space] = environment.space
        object.sys[:environment] = environment
        object.client = environment.client
        object
      end

      def associated_class
        class_name = /\A(.+)Environment(.+)MethodsFactory\z/.match(self.class.name).captures.join
        class_name.split('::').reduce(Object) do |mod, actual_class_name|
          mod.const_get(actual_class_name)
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
contentful-management-3.10.0 lib/contentful/management/environment_association_methods_factory.rb
contentful-management-3.9.0 lib/contentful/management/environment_association_methods_factory.rb