Class: Clientele::RequestBuilder

Inherits:
Object
  • Object
show all
Includes:
Utils, Enumerable
Defined in:
lib/clientele/request_builder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Utils

deep_camelize_keys, ensure_trailing_slash, merge_paths

Constructor Details

#initialize(*request_components, client: API.client) ⇒ RequestBuilder

Returns a new instance of RequestBuilder.



11
12
13
14
# File 'lib/clientele/request_builder.rb', line 11

def initialize(*request_components, client: API.client)
  @stack = request_components.flatten
  @client = client
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args, &block) ⇒ Object (private)



59
60
61
62
63
64
65
66
67
# File 'lib/clientele/request_builder.rb', line 59

def method_missing(method_name, *args, &block)
  if stack.last.respond_to? method_name, false
    tap { |builder| builder.stack = builder.stack[0..-2] << builder.stack.last.send(method_name, *args, &block) }
  elsif client.resources.keys.include? method_name
    tap { |builder| builder.stack << client.resources[method_name] }
  elsif stack.last.paginateable? and enumberable_methods.include? method_name
    stack.last.send :each, build, &block
  else; super; end
end

Instance Attribute Details

#clientObject

Returns the value of attribute client.



8
9
10
# File 'lib/clientele/request_builder.rb', line 8

def client
  @client
end

#stackObject Also known as: to_a

Returns the value of attribute stack.



8
9
10
# File 'lib/clientele/request_builder.rb', line 8

def stack
  @stack
end

Instance Method Details

#callObject



16
17
18
# File 'lib/clientele/request_builder.rb', line 16

def call
  build.call
end