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



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

def initialize(env)
  super
  parse
end

Class Method Details

.from_env(env) ⇒ Object



10
11
12
13
14
15
16
17
18
19
# File 'lib/proxes/request.rb', line 10

def self.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



21
22
23
24
25
26
27
28
# File 'lib/proxes/request.rb', line 21

def self.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

#endpointObject



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

def endpoint
  path_parts[0]
end

#indices?Boolean



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

def indices?
  false
end

#parseObject



39
40
41
# File 'lib/proxes/request.rb', line 39

def parse
  path_parts
end