Sha256: 22eee4d6215fa8f80f17c8a876c1df03e6307c6b2d1ce469d9ed4c0e93a50f74

Contents?: true

Size: 1.82 KB

Versions: 3

Compression:

Stored size: 1.82 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 = []

        @version_prefix = ""
        if resource_definition.version_options
          version_using = Array(resource_definition.version_options[:using])
          if version_using.include?(:path)  
            @version_prefix = "#{Praxis::Request::path_version_prefix}#{resource_definition.version}"
          end
        end
        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)
        @path_prefix = prefix if prefix
        @version_prefix + @path_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 any(path, opts={})     add_route 'ANY',       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.15.0 lib/praxis/skeletor/restful_routing_config.rb
praxis-0.14.0 lib/praxis/skeletor/restful_routing_config.rb
praxis-0.13.0 lib/praxis/skeletor/restful_routing_config.rb