Sha256: bb11cc271d210fe1f6db360c9463b2aba02e346ea2cba61f2298e66513e6e120

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

#
# Make the Grape::Endpoint quack like a ActionController
#
# This allows us to rely on the ActiveModel::Serializer#build_json method
# to lookup the approriate serializer.
#
module Grape
  module EndpointExtension
    attr_accessor :controller_name

    def namespace_options
      if respond_to?(:inheritable_setting)
        inheritable_setting.namespace
      else
        settings[:namespace] ? settings[:namespace].options : {}
      end
    end

    def route_options
      if respond_to?(:inheritable_setting)
        inheritable_setting.route
      else
        options[:route_options]
      end
    end

    def self.included(base)
      mattr_accessor :_serialization_scope
      self._serialization_scope = :current_user

      base.class_eval do
        def serialization_scope
          return unless _serialization_scope
          return unless respond_to?(_serialization_scope, true)
          send(_serialization_scope)
        end
      end
    end

    def render(resources, meta = {})
      env['ams_meta'] = meta
      resources
    end

    def default_serializer_options
    end

    def url_options
    end
  end

  Endpoint.send(:include, EndpointExtension)
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
grape-active_model_serializers-1.5.0 lib/grape-active_model_serializers/endpoint_extension.rb