Sha256: 97fa1195b846f756d5e5d60852a8f361d5f0920bc862c27fbe0bd3f21ea1d126
Contents?: true
Size: 2 KB
Versions: 3
Compression:
Stored size: 2 KB
Contents
# frozen_string_literal: true require 'rack' module ProxES class Request < Rack::Request ID_ENDPOINTS = %w[_create _explain _mlt _percolate _source _termvector _update].freeze WRITE_METHODS = %w[POST PUT DELETE].freeze def initialize(env) @started = Time.now.to_f super parse end def endpoint path_parts[0] end def parse path_parts end def indices? false end def html? get_header('HTTP_ACCEPT') && get_header('HTTP_ACCEPT').include?('text/html') end def duration Time.now.to_f - @started end def user_id return env['omniauth.auth'].uid if env['omniauth.auth'] env['rack.session']['user_id'] if env['rack.session'] end def user return nil if user_id.nil? @user ||= Ditty::User[user_id] end def detail "#{request_method.upcase} #{fullpath} (#{self.class.name})" end private def path_parts @path_parts ||= path.split('?')[0][1..-1].split('/') end def check_part(val) return val if val.nil? return [] if [endpoint, '_all'].include?(val) && !WRITE_METHODS.include?(request_method) val.split(',') end class << self def from_env(env) endpoint = path_endpoint(env['REQUEST_PATH']) endpoint_class = endpoint.nil? ? 'index' : endpoint[1..-1] begin require 'proxes/request/' + endpoint_class.downcase Request.const_get(endpoint_class.titlecase).new(env) rescue LoadError new(env) end end def path_endpoint(path) return '_root' if ['', nil, '/'].include? path path_parts = path[1..-1].split('/') return path_parts[-1] if ID_ENDPOINTS.include? path_parts[-1] return path_parts[-2] if path_parts[-1] == 'count' && path_parts[-2] == '_percolate' return path_parts[-2] if path_parts[-1] == 'scroll' && path_parts[-2] == '_search' path_parts.find { |part| part[0] == '_' } end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
proxes-0.9.9 | lib/proxes/request.rb |
proxes-0.9.7 | lib/proxes/request.rb |
proxes-0.9.4 | lib/proxes/request.rb |