Module: Soaspec::RequestBuilder
- Included in:
- Exchange
- Defined in:
- lib/soaspec/exchange/request_builder.rb
Overview
Methods to help build a Request
Instance Method Summary collapse
-
#+(request_parameters) ⇒ Object
(also: #add)
Add request parameters onto existing exchange.
-
#[]=(key, value) ⇒ Object
Set a parameter request in the request body.
-
#method=(method) ⇒ Object
Specify HTTP method to use.
-
#method_missing(method_name, *args, &block) ⇒ Object
Implement undefined setter with []= for FactoryBot to use without needing to define params to set.
-
#respond_to_missing?(method_name, *args) ⇒ Boolean
Used for setters that are not defined.
-
#save! ⇒ Self
Makes request, caching the response and returning self Used by FactoryBot.
-
#suburl=(url) ⇒ Object
Specify a url to add onto the base_url of the ExchangeHandler used.
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args, &block) ⇒ Object
Implement undefined setter with []= for FactoryBot to use without needing to define params to set
36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/soaspec/exchange/request_builder.rb', line 36 def method_missing(method_name, *args, &block) set_value = args.first if method_name[-1] == '=' # A setter method getter_name = method_name[0..-2] if set_value.class < Exchange # This would be prerequisite exchange define_singleton_method(getter_name) { set_value } self[getter_name] = set_value.id if set_value.respond_to?(:id) else self[getter_name] = set_value end else super end end |
Instance Method Details
#+(request_parameters) ⇒ Object Also known as: add
Add request parameters onto existing exchange
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/soaspec/exchange/request_builder.rb', line 86 def +(request_parameters) request_parameters.each do |req_name, req_value| if req_value.respond_to?(:each) req_value.each do |key, value| if @override_parameters[req_name] @override_parameters[req_name][key] = value else @override_parameters[req_name] = { key => value } end end else if @override_parameters[req_name] @override_parameters[req_name] += req_value else @override_parameters[req_name] = req_value end end end end |
#[]=(key, value) ⇒ Object
Set a parameter request in the request body. Can be used to build a request over several steps (e.g Cucumber) Will be used with FactoryBot
27 28 29 30 |
# File 'lib/soaspec/exchange/request_builder.rb', line 27 def []=(key, value) @override_parameters[:body] ||= {} @override_parameters[:body][key] = value end |
#method=(method) ⇒ Object
Specify HTTP method to use. Default is :post
14 15 16 |
# File 'lib/soaspec/exchange/request_builder.rb', line 14 def method=(method) @override_parameters[:method] = method end |
#respond_to_missing?(method_name, *args) ⇒ Boolean
Used for setters that are not defined
54 55 56 |
# File 'lib/soaspec/exchange/request_builder.rb', line 54 def respond_to_missing?(method_name, *args) method_name[-1] == '=' || super end |
#save! ⇒ Self
Makes request, caching the response and returning self Used by FactoryBot
61 62 63 64 |
# File 'lib/soaspec/exchange/request_builder.rb', line 61 def save! @retry_for_success = @fail_factory ? false : true call end |
#suburl=(url) ⇒ Object
Specify a url to add onto the base_url of the ExchangeHandler used
8 9 10 |
# File 'lib/soaspec/exchange/request_builder.rb', line 8 def suburl=(url) @override_parameters[:suburl] = url end |