Sha256: 3b381c50db74d787813aa7ba596341b34a01141c29991d0493509d99557a1701
Contents?: true
Size: 1.73 KB
Versions: 3
Compression:
Stored size: 1.73 KB
Contents
#!/usr/bin/env ruby # frozen_string_literal: true rack_api_lib_folder = File.join(File.dirname(__FILE__), '..', 'lib') $LOAD_PATH.unshift(rack_api_lib_folder) require 'rack/app' require 'pp' tree = Rack::App::Router::Tree.new APP = Class.new(Rack::App) payload = Rack::App::Payload::Builder.new payload.parser_builder do accept :json end serializer = Rack::App::Serializer::FormatsBuilder.new serializer.instance_exec do on '.json', 'application/json' do |obj| JSON.dump(obj) end end endpoint = Rack::App::Endpoint.new( :route => {}, :app_class => APP, :request_methods => ["GET"], :request_path => '/hello/world/:id', :middleware_builders_blocks => [], :user_defined_logic => proc{ "hy" }, :serializer_builder => serializer, :payload => payload, :error_handler => Rack::App::ErrorHandler.new, ) properties = { :request_methods => ::Rack::App::Constants::HTTP::METHODS, :request_path => Rack::App::Utils.join("hello", ::Rack::App::Constants::RACK_BASED_APPLICATION), :application => proc{|env| Rack::Response.new.finish } } tree.add(Rack::App::Endpoint.new(properties)) endpoint = Rack::App::Endpoint.new( :route => {}, :app_class => APP, :request_methods => ["GET"], :request_path => '/hello/world/:id', :middleware_builders_blocks => [], :user_defined_logic => proc{ "hy" }, :serializer_builder => serializer, :payload => payload, :error_handler => Rack::App::ErrorHandler.new, ) tree.add(endpoint) pp tree require 'rack' puts [ "/hello/world/123.json", "/hello/world/123", "/hello/world", ].each do |path_info| env = Rack::MockRequest.env_for(path_info, :method => 'GET') resp = tree.call(env) puts(path_info) p resp.is_a?(Array) && resp.length == 3 puts end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
rack-app-5.12.0 | spike/tree.rb |
rack-app-5.11.1 | spike/tree.rb |
rack-app-5.11.0 | spike/tree.rb |