class RubyAPI::Request

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