Class: Wrappi::Endpoint
- Inherits:
-
Object
- Object
- Wrappi::Endpoint
- Defined in:
- lib/wrappi/testing.rb,
lib/wrappi/endpoint.rb
Instance Attribute Summary collapse
-
#input_params ⇒ Object
readonly
Returns the value of attribute input_params.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
Class Method Summary collapse
- .around_request(&block) ⇒ Object
- .async_callback(&block) ⇒ Object
- .cache_options(&block) ⇒ Object
- .call(*args) ⇒ Object
- .retry_if(&block) ⇒ Object
Instance Method Summary collapse
- #around_request ⇒ Object
- #async(async_options = {}) ⇒ Object
- #body ⇒ Object
- #cache_key ⇒ Object
- #cache_options ⇒ Object
-
#consummated_params ⇒ Object
overridable.
- #error? ⇒ Boolean
- #fixture_content ⇒ Object
- #fixture_name ⇒ Object
- #fixture_params_key ⇒ Object
- #flush ⇒ Object
-
#initialize(input_params = {}, options = {}) ⇒ Endpoint
constructor
A new instance of Endpoint.
- #perform_async_callback(async_options = {}) ⇒ Object
- #response ⇒ Object (also: #call)
- #retry_if ⇒ Object
- #status ⇒ Object
- #success? ⇒ Boolean
- #url ⇒ Object
- #url_with_params ⇒ Object
Constructor Details
#initialize(input_params = {}, options = {}) ⇒ Endpoint
Returns a new instance of Endpoint.
23 24 25 26 |
# File 'lib/wrappi/endpoint.rb', line 23 def initialize(input_params = {}, = {}) @input_params = input_params @options = end |
Instance Attribute Details
#input_params ⇒ Object (readonly)
Returns the value of attribute input_params.
22 23 24 |
# File 'lib/wrappi/endpoint.rb', line 22 def input_params @input_params end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
22 23 24 |
# File 'lib/wrappi/endpoint.rb', line 22 def @options end |
Class Method Details
.around_request(&block) ⇒ Object
68 69 70 |
# File 'lib/wrappi/endpoint.rb', line 68 def self.around_request(&block) @around_request = block end |
.async_callback(&block) ⇒ Object
64 65 66 |
# File 'lib/wrappi/endpoint.rb', line 64 def self.async_callback(&block) @async_callback = block end |
.cache_options(&block) ⇒ Object
76 77 78 |
# File 'lib/wrappi/endpoint.rb', line 76 def self.(&block) @cache_options = block end |
.call(*args) ⇒ Object
28 29 30 |
# File 'lib/wrappi/endpoint.rb', line 28 def self.call(*args) new(*args).call end |
.retry_if(&block) ⇒ Object
72 73 74 |
# File 'lib/wrappi/endpoint.rb', line 72 def self.retry_if(&block) @retry_if = block end |
Instance Method Details
#around_request ⇒ Object
89 90 91 |
# File 'lib/wrappi/endpoint.rb', line 89 def around_request self.class.instance_variable_get(:@around_request) end |
#async(async_options = {}) ⇒ Object
43 44 45 |
# File 'lib/wrappi/endpoint.rb', line 43 def async( = {}) async_handler.call(self, ) end |
#body ⇒ Object
37 |
# File 'lib/wrappi/endpoint.rb', line 37 def body; response.body end |
#cache_key ⇒ Object
84 85 86 87 |
# File 'lib/wrappi/endpoint.rb', line 84 def cache_key # TODO: think headers have to be in the key as well @cache_key ||= "[#{verb.to_s.upcase}]##{url}#{params_cache_key}" end |
#cache_options ⇒ Object
96 97 98 |
# File 'lib/wrappi/endpoint.rb', line 96 def self.class.instance_variable_get(:@cache_options) end |
#consummated_params ⇒ Object
overridable
48 49 50 |
# File 'lib/wrappi/endpoint.rb', line 48 def consummated_params params end |
#error? ⇒ Boolean
40 |
# File 'lib/wrappi/endpoint.rb', line 40 def error?; !success? end |
#fixture_content ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/wrappi/testing.rb', line 14 def fixture_content return {} unless success? { request: { method: verb.to_s, url: url, domain: domain, headers: headers, params: consummated_params, path: path_gen.path }, response: { status: status, body: body } } end |
#fixture_name ⇒ Object
4 5 6 |
# File 'lib/wrappi/testing.rb', line 4 def fixture_name "#{self.class}#{fixture_params_key}.json" end |
#fixture_params_key ⇒ Object
8 9 10 11 12 |
# File 'lib/wrappi/testing.rb', line 8 def fixture_params_key return if processed_params.empty? d = Digest::MD5.hexdigest processed_params.to_json "-#{d}" end |
#flush ⇒ Object
41 |
# File 'lib/wrappi/endpoint.rb', line 41 def flush; @response = nil end |
#perform_async_callback(async_options = {}) ⇒ Object
80 81 82 |
# File 'lib/wrappi/endpoint.rb', line 80 def perform_async_callback( = {}) instance_exec(, &async_callback) end |
#response ⇒ Object Also known as: call
32 33 34 |
# File 'lib/wrappi/endpoint.rb', line 32 def response @response ||= Executer.call(self) end |
#retry_if ⇒ Object
93 94 95 |
# File 'lib/wrappi/endpoint.rb', line 93 def retry_if self.class.instance_variable_get(:@retry_if) end |
#status ⇒ Object
39 |
# File 'lib/wrappi/endpoint.rb', line 39 def status; response.status end |
#success? ⇒ Boolean
38 |
# File 'lib/wrappi/endpoint.rb', line 38 def success?; response.success? end |
#url ⇒ Object
52 53 54 |
# File 'lib/wrappi/endpoint.rb', line 52 def url _url.to_s end |
#url_with_params ⇒ Object
56 57 58 59 60 61 |
# File 'lib/wrappi/endpoint.rb', line 56 def url_with_params return url unless verb == :get _url.tap do |u| u.query = URI.encode_www_form(consummated_params) if consummated_params.any? end.to_s end |