Class: Clientele::RequestBuilder
- Inherits:
-
Object
- Object
- Clientele::RequestBuilder
- Includes:
- Utils, Enumerable
- Defined in:
- lib/clientele/request_builder.rb
Instance Attribute Summary collapse
-
#client ⇒ Object
Returns the value of attribute client.
-
#stack ⇒ Object
(also: #to_a)
Returns the value of attribute stack.
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(*request_components, client: API.client) ⇒ RequestBuilder
constructor
A new instance of RequestBuilder.
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
#client ⇒ Object
Returns the value of attribute client.
8 9 10 |
# File 'lib/clientele/request_builder.rb', line 8 def client @client end |
#stack ⇒ Object 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
#call ⇒ Object
16 17 18 |
# File 'lib/clientele/request_builder.rb', line 16 def call build.call end |