Sha256: 455f4ae3c61a837f812676b9f0fa52a99510d160de26a58f033022c01bbce63a

Contents?: true

Size: 1.4 KB

Versions: 3

Compression:

Stored size: 1.4 KB

Contents

module Praxis
  module Skeletor
    class RestfulRoutingConfig

      attr_reader :name, :resource_definition, :routes

      def initialize(name, resource_definition, &block)
        @name = name
        @resource_definition = resource_definition
        @routes = []

        @prefix = "/" + resource_definition.name.split("::").last.underscore

        if resource_definition.routing_config
          instance_eval(&resource_definition.routing_config)
        end

        instance_eval(&block)
      end

      def prefix(prefix=nil)
        return @prefix unless prefix
        @prefix = prefix
      end

      def options(path, opts={}) add_route 'OPTIONS', path, opts end
      def get(path, opts={})     add_route 'GET',     path, opts end
      def head(path, opts={})    add_route 'HEAD',    path, opts end
      def post(path, opts={})    add_route 'POST',    path, opts end
      def put(path, opts={})     add_route 'PUT',     path, opts end
      def delete(path, opts={})  add_route 'DELETE',  path, opts end
      def trace(path, opts={})   add_route 'TRACE',   path, opts end
      def connect(path, opts={}) add_route 'CONNECT', path, opts end
      def patch(path, opts={})   add_route 'PATCH',   path, opts end

      def add_route(verb, path, options={})
        path = Mustermann.new(@prefix + path)

        @routes << Route.new(verb, path, resource_definition.version, **options)
      end

    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
praxis-0.10.1 lib/praxis/skeletor/restful_routing_config.rb
praxis-0.10.0 lib/praxis/skeletor/restful_routing_config.rb
praxis-0.9 lib/praxis/skeletor/restful_routing_config.rb