Class: Hyperdrive::Resource

Inherits:
Object
  • Object
show all
Defined in:
lib/hyperdrive/resource.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(key) ⇒ Resource



8
9
10
11
12
13
14
# File 'lib/hyperdrive/resource.rb', line 8

def initialize(key)
  @key = key
  @endpoint = "/#{@key.to_s.en.plural}"
  @allowed_params = default_allowed_params
  @filters = default_filters
  @request_handlers = default_request_handlers
end

Instance Attribute Details

#allowed_paramsObject (readonly)

Returns the value of attribute allowed_params.



5
6
7
# File 'lib/hyperdrive/resource.rb', line 5

def allowed_params
  @allowed_params
end

#descObject

Returns the value of attribute desc.



6
7
8
# File 'lib/hyperdrive/resource.rb', line 6

def desc
  @desc
end

#endpointObject (readonly)

Returns the value of attribute endpoint.



5
6
7
# File 'lib/hyperdrive/resource.rb', line 5

def endpoint
  @endpoint
end

#filtersObject (readonly)

Returns the value of attribute filters.



5
6
7
# File 'lib/hyperdrive/resource.rb', line 5

def filters
  @filters
end

#nameObject

Returns the value of attribute name.



6
7
8
# File 'lib/hyperdrive/resource.rb', line 6

def name
  @name
end

#request_handlersObject (readonly)

Returns the value of attribute request_handlers.



5
6
7
# File 'lib/hyperdrive/resource.rb', line 5

def request_handlers
  @request_handlers
end

Instance Method Details

#allowed_methodsObject



42
43
44
# File 'lib/hyperdrive/resource.rb', line 42

def allowed_methods
  Hyperdrive::Values.request_methods_symbol_map.values_at(*request_handlers.keys)
end

#define_request_handler(request_method, block) ⇒ Object



26
27
28
29
30
31
# File 'lib/hyperdrive/resource.rb', line 26

def define_request_handler(request_method, block)
  @request_handlers[request_method] = block
  if request_method == :get
    @request_handlers[:head] = block
  end
end

#register_filter(key, description, options = {}) ⇒ Object



21
22
23
24
# File 'lib/hyperdrive/resource.rb', line 21

def register_filter(key, description, options = {})
  options = default_filter_options.merge(options)
  @filters[key] = { desc: description }.merge(options)
end

#register_param(key, description, options = {}) ⇒ Object



16
17
18
19
# File 'lib/hyperdrive/resource.rb', line 16

def register_param(key, description, options = {})
  options = default_param_options.merge(options)
  @allowed_params[key] = { desc: description }.merge(options)
end

#request_handler(http_request_method) ⇒ Object



33
34
35
36
# File 'lib/hyperdrive/resource.rb', line 33

def request_handler(http_request_method)
  request_method = Hyperdrive::Values.request_methods_string_map[http_request_method]
  request_handlers[request_method]
end

#request_method_allowed?(http_request_method) ⇒ Boolean



38
39
40
# File 'lib/hyperdrive/resource.rb', line 38

def request_method_allowed?(http_request_method)
  allowed_methods.include?(http_request_method)
end