Class: ProxES::Request

Inherits:
Rack::Request
  • Object
show all
Defined in:
lib/proxes/request.rb,
lib/proxes/request/cat.rb,
lib/proxes/request/bulk.rb,
lib/proxes/request/root.rb,
lib/proxes/request/index.rb,
lib/proxes/request/stats.rb,
lib/proxes/request/create.rb,
lib/proxes/request/search.rb,
lib/proxes/request/snapshot.rb,
lib/proxes/policies/request/cat_policy.rb,
lib/proxes/policies/request/bulk_policy.rb,
lib/proxes/policies/request/root_policy.rb,
lib/proxes/policies/request/index_policy.rb,
lib/proxes/policies/request/stats_policy.rb,
lib/proxes/policies/request/create_policy.rb,
lib/proxes/policies/request/search_policy.rb,
lib/proxes/policies/request/snapshot_policy.rb

Direct Known Subclasses

Bulk, Cat, Create, Index, Root, Search, Snapshot, Stats

Defined Under Namespace

Classes: Bulk, BulkPolicy, Cat, CatPolicy, Create, CreatePolicy, Index, IndexPolicy, Root, RootPolicy, Search, SearchPolicy, Snapshot, SnapshotPolicy, Stats, StatsPolicy

Constant Summary collapse

ID_ENDPOINTS =
%w[_create _explain _mlt _percolate _source _termvector _update].freeze
WRITE_METHODS =
%w[POST PUT DELETE].freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(env) ⇒ Request

Returns a new instance of Request.



10
11
12
13
14
# File 'lib/proxes/request.rb', line 10

def initialize(env)
  @started = Time.now.to_f
  super
  parse
end

Class Method Details

.from_env(env) ⇒ Object



63
64
65
66
67
68
69
70
71
72
# File 'lib/proxes/request.rb', line 63

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

.path_endpoint(path) ⇒ Object



74
75
76
77
78
79
80
81
# File 'lib/proxes/request.rb', line 74

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

Instance Method Details

#detailObject



46
47
48
# File 'lib/proxes/request.rb', line 46

def detail
  "#{request_method.upcase} #{fullpath} (#{self.class.name})"
end

#durationObject



32
33
34
# File 'lib/proxes/request.rb', line 32

def duration
  Time.now.to_f - @started
end

#endpointObject



16
17
18
# File 'lib/proxes/request.rb', line 16

def endpoint
  path_parts[0]
end

#html?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/proxes/request.rb', line 28

def html?
  get_header('HTTP_ACCEPT') && get_header('HTTP_ACCEPT').include?('text/html')
end

#indices?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/proxes/request.rb', line 24

def indices?
  false
end

#parseObject



20
21
22
# File 'lib/proxes/request.rb', line 20

def parse
  path_parts
end

#userObject



41
42
43
44
# File 'lib/proxes/request.rb', line 41

def user
  return nil if user_id.nil?
  @user ||= Ditty::User[user_id]
end

#user_idObject



36
37
38
39
# File 'lib/proxes/request.rb', line 36

def user_id
  return env['rack.session']['user_id'] if env['rack.session']
  env['omniauth.auth'].uid if env['omniauth.auth']
end