class RubyAPI::Request
Public Class Methods
new(app, env, routes = {})
click to toggle source
# File lib/ruby_api/request.rb, line 10 def initialize(app, env, routes = {}) @app = app @env = env @routes = routes @rack_req = Rack::Request.new(env) end
Public Instance Methods
app_module()
click to toggle source
# File lib/ruby_api/request.rb, line 44 def app_module @app.app_module end
arguments()
click to toggle source
# File lib/ruby_api/request.rb, line 34 def arguments @rack_req.params.merge json_arguments end
feature()
click to toggle source
# File lib/ruby_api/request.rb, line 17 def feature class_name = feature_name.camelize unless app_module.const_defined?(class_name) raise "Feature `#{feature_name}` not found" end app_module.const_get(class_name) end
feature_name()
click to toggle source
# File lib/ruby_api/request.rb, line 60 def feature_name slices[0].to_s.empty? ? root_feature : slices[0].to_s end
json_arguments()
click to toggle source
# File lib/ruby_api/request.rb, line 38 def json_arguments JSON.parse @rack_req.body.read rescue JSON::ParserError {} end
method()
click to toggle source
# File lib/ruby_api/request.rb, line 85 def method @env['REQUEST_METHOD'].to_s.downcase end
operation()
click to toggle source
# File lib/ruby_api/request.rb, line 25 def operation class_name = operation_name.camelize unless feature.const_defined?(class_name) fname = feature.name.split('::').last.underscore raise "Operation `#{fname}/#{operation_name}` not found" end feature.const_get class_name end
operation_name()
click to toggle source
# File lib/ruby_api/request.rb, line 64 def operation_name slices[1].to_s.empty? ? root_operation : slices[1].to_s end
path()
click to toggle source
# File lib/ruby_api/request.rb, line 73 def path @env['REQUEST_PATH'].to_s.gsub(%r{^\/}, '') end
root_feature()
click to toggle source
# File lib/ruby_api/request.rb, line 52 def root_feature root_route.split('/')[0].to_s end
root_operation()
click to toggle source
# File lib/ruby_api/request.rb, line 56 def root_operation root_route.split('/')[1].to_s end
root_route()
click to toggle source
# File lib/ruby_api/request.rb, line 48 def root_route @routes[:root] end
route_slices(path)
click to toggle source
# File lib/ruby_api/request.rb, line 81 def route_slices(path) @routes[path.to_sym].split('/') end
routes?(path)
click to toggle source
# File lib/ruby_api/request.rb, line 77 def routes?(path) @routes.key?(path.to_sym) end
slices()
click to toggle source
# File lib/ruby_api/request.rb, line 68 def slices return route_slices(path) if routes?(path) path.split('/') end