Sha256: e8bb906b0679e59cbeeba264cb8e8170b3a4005d6ff39f6929ea36899a690769
Contents?: true
Size: 1.24 KB
Versions: 1
Compression:
Stored size: 1.24 KB
Contents
require 'http_router' module Goliath module Rack class Builder < ::Rack::Builder attr_accessor :params include Params::Parser # Builds the rack middleware chain for the given API # # @param klass [Class] The API class to build the middlewares for # @param api [Object] The instantiated API # @return [Object] The Rack middleware chain def self.build(klass, api) Builder.app do klass.middlewares.each do |mw_klass, args, blk| use(mw_klass, *args, &blk) end if klass.maps? klass.maps.each do |path, route_klass, opts, blk| blk ||= Proc.new { run Builder.build(route_klass, route_klass.new) } klass.router.add(path, opts.dup).to {|env| builder = Builder.new env['params'] ||= {} env['params'].merge!(env['router.params']) if env['router.params'] builder.params = builder.retrieve_params(env) builder.instance_eval(&blk) builder.to_app.call(env) } end run klass.router else run api end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
goliath-0.9.2 | lib/goliath/rack/builder.rb |