bguest/rest_area

View on GitHub
lib/rest_area/configuration.rb

Summary

Maintainability
A
0 mins
Test Coverage
##
# Used for configuring rest_area
#
# Example:
#
# RestArea.configure do
#   resources :cereal, :thing do
#     action :index, :show, :create, :update, :delete
#     messages :say_hello, :say_goodbye
#     headers ({
#       'Cache-Control' => 'public, max-age=86400'
#       'Expires' => ->{Date.today + 1}
#     })
#   end
#
#   resource :supermarket do
#     read_only!
#     key :name
#     message :ring_it_up
#   end
# end
#
module RestArea
  class Configuration

    def initialize()
      @resources = {}
    end

    def resources(*args, &block)
      if args.any?
        args.each do |klass| resource(klass, &block) end
      else
        @resources
      end
    end

    def resource(klass, &block)
      resource = @resources[klass] || Resource.new(klass)
      resource.instance_eval(&block) if block_given?
      @resources[klass] = resource
    end
  end

end