Class: Synthra::APIServer::RackRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/synthra/api_server.rb

Overview

Request adapter for Rack

Instance Method Summary collapse

Constructor Details

#initialize(env) ⇒ RackRequest

Returns a new instance of RackRequest.



655
656
657
658
# File 'lib/synthra/api_server.rb', line 655

def initialize(env)
  @env = env
  @request = Rack::Request.new(env) if defined?(Rack::Request)
end

Instance Method Details

#client_ipObject



686
687
688
# File 'lib/synthra/api_server.rb', line 686

def client_ip
  @env["REMOTE_ADDR"]
end

#headersObject



681
682
683
684
# File 'lib/synthra/api_server.rb', line 681

def headers
  @env.select { |k, _| k.start_with?("HTTP_") }
      .transform_keys { |k| k[5..].tr("_", "-").downcase }
end

#json_bodyObject



690
691
692
693
694
# File 'lib/synthra/api_server.rb', line 690

def json_body
  body = @env["rack.input"]&.read
  @env["rack.input"]&.rewind
  JSON.parse(body || "{}") rescue {}
end

#methodObject



664
665
666
# File 'lib/synthra/api_server.rb', line 664

def method
  @env["REQUEST_METHOD"]
end

#options?Boolean

Returns:

  • (Boolean)


668
669
670
# File 'lib/synthra/api_server.rb', line 668

def options?
  method == "OPTIONS"
end

#pathObject



660
661
662
# File 'lib/synthra/api_server.rb', line 660

def path
  @env["PATH_INFO"]
end

#post?Boolean

Returns:

  • (Boolean)


672
673
674
# File 'lib/synthra/api_server.rb', line 672

def post?
  method == "POST"
end

#query_paramsObject



676
677
678
679
# File 'lib/synthra/api_server.rb', line 676

def query_params
  return {} unless @request
  @request.params.transform_keys(&:to_sym)
end