Sha256: fda7163c12ae6ceaea832c6e868154d65966cb618b8f55a99f74b260ef26d902

Contents?: true

Size: 1.36 KB

Versions: 19

Compression:

Stored size: 1.36 KB

Contents

module Graphiti
  class Resource
    module Interface
      extend ActiveSupport::Concern

      class_methods do
        def all(params = {}, base_scope = nil)
          validate!(params)
          _all(params, {}, base_scope)
        end

        # @api private
        def _all(params, opts, base_scope)
          runner = Runner.new(self, params, opts.delete(:query))
          runner.proxy(base_scope, opts)
        end

        def find(params = {}, base_scope = nil)
          validate!(params)
          id = params[:data].try(:[], :id) || params.delete(:id)
          params[:filter] ||= {}
          params[:filter].merge!(id: id) if id

          runner = Runner.new(self, params)
          runner.proxy(base_scope, single: true, raise_on_missing: true)
        end

        def build(params, base_scope = nil)
          validate!(params)
          runner = Runner.new(self, params)
          runner.proxy(base_scope, single: true, raise_on_missing: true)
        end

        private

        def validate!(params)
          return unless validate_endpoints?

          if context && context.respond_to?(:request)
            path = context.request.env['PATH_INFO']
            unless allow_request?(path, params, context_namespace)
              raise Errors::InvalidEndpoint.new(self, path, context_namespace)
            end
          end
        end
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
graphiti-1.0.alpha.25 lib/graphiti/resource/interface.rb
graphiti-1.0.alpha.24 lib/graphiti/resource/interface.rb
graphiti-1.0.alpha.23 lib/graphiti/resource/interface.rb
graphiti-1.0.alpha.22 lib/graphiti/resource/interface.rb
graphiti-1.0.alpha.21 lib/graphiti/resource/interface.rb
graphiti-1.0.alpha.20 lib/graphiti/resource/interface.rb
graphiti-1.0.alpha.19 lib/graphiti/resource/interface.rb
graphiti-1.0.alpha.18 lib/graphiti/resource/interface.rb
graphiti-1.0.alpha.17 lib/graphiti/resource/interface.rb
graphiti-1.0.alpha.16 lib/graphiti/resource/interface.rb
graphiti-1.0.alpha.15 lib/graphiti/resource/interface.rb
graphiti-1.0.alpha.14 lib/graphiti/resource/interface.rb
graphiti-1.0.alpha.12 lib/graphiti/resource/interface.rb
graphiti-1.0.alpha.11 lib/graphiti/resource/interface.rb
graphiti-1.0.alpha.10 lib/graphiti/resource/interface.rb
graphiti-1.0.alpha.9 lib/graphiti/resource/interface.rb
graphiti-1.0.alpha.8 lib/graphiti/resource/interface.rb
graphiti-1.0.alpha.7 lib/graphiti/resource/interface.rb
graphiti-1.0.alpha.6 lib/graphiti/resource/interface.rb