lib/scimitar/engine.rb in scimitar-1.11.0 vs lib/scimitar/engine.rb in scimitar-2.0.0
- old
+ new
@@ -1,42 +1,19 @@
-require 'rails/engine'
-
module Scimitar
class Engine < ::Rails::Engine
isolate_namespace Scimitar
- config.autoload_once_paths = %W(
- #{root}/app/controllers
- #{root}/app/models
- )
-
Mime::Type.register 'application/scim+json', :scim
ActionDispatch::Request.parameter_parsers[Mime::Type.lookup('application/scim+json').symbol] = lambda do |body|
JSON.parse(body)
end
- # Return an Array of all supported default and custom resource classes.
- # See also :add_custom_resource and :set_default_resources.
- #
def self.resources
- self.default_resources() + self.custom_resources()
+ default_resources + custom_resources
end
- # Returns a flat array of instances of all resource schema included in the
- # resource classes returned by ::resources.
- #
- def self.schemas
- self.resources().map(&:schemas).flatten.uniq.map(&:new)
- end
-
- # Returns the list of custom resources, if any.
- #
- def self.custom_resources
- @custom_resources ||= []
- end
-
# Can be used to add a new resource type which is not provided by the gem.
# For example:
#
# module Scim
# module Resources
@@ -51,58 +28,36 @@
# end
#
# Scimitar::Engine.add_custom_resource Scim::Resources::ShinyResource
#
def self.add_custom_resource(resource)
- self.custom_resources() << resource
+ custom_resources << resource
end
# Resets the resource list to default. This is really only intended for use
# during testing, to avoid one test polluting another.
#
def self.reset_custom_resources
@custom_resources = []
end
- # Returns the default resources added in this gem - by default, these are:
+ # Returns the list of custom resources, if any.
#
+ def self.custom_resources
+ @custom_resources ||= []
+ end
+
+ # Returns the default resources added in this gem:
+ #
# * Scimitar::Resources::User
# * Scimitar::Resources::Group
#
- # ...but if an implementation does not e.g. support Group, it can
- # be overridden via ::set_default_resources to help with service
- # auto-discovery.
- #
def self.default_resources
- @standard_default_resources = [ Resources::User, Resources::Group ]
- @default_resources ||= @standard_default_resources.dup()
+ [ Resources::User, Resources::Group ]
end
- # Override the resources returned by ::default_resources.
- #
- # +resource_array+:: An Array containing one or both of
- # Scimitar::Resources::User and/or
- # Scimitar::Resources::Group, and nothing else.
- #
- def self.set_default_resources(resource_array)
- self.default_resources()
- unrecognised_resources = resource_array - @standard_default_resources
-
- if unrecognised_resources.any?
- raise "Scimitar::Engine.set_default_resources: Only #{@standard_default_resources.map(&:name).join(', ')} are supported"
- elsif resource_array.empty?
- raise 'Scimitar::Engine.set_default_resources: At least one resource must be given'
- end
-
- @default_resources = resource_array
- end
-
- # Resets the default resource list. This is really only intended for use
- # during testing, to avoid one test polluting another.
- #
- def self.reset_default_resources
- self.default_resources()
- @default_resources = @standard_default_resources
+ def self.schemas
+ resources.map(&:schemas).flatten.uniq.map(&:new)
end
end
end