Class: Wrappi::Endpoint

Inherits:
Object
  • Object
show all
Defined in:
lib/wrappi/testing.rb,
lib/wrappi/endpoint.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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 = {}, options = {})
  @input_params = input_params
  @options = options
end

Instance Attribute Details

#input_paramsObject (readonly)

Returns the value of attribute input_params.



22
23
24
# File 'lib/wrappi/endpoint.rb', line 22

def input_params
  @input_params
end

#optionsObject (readonly)

Returns the value of attribute options.



22
23
24
# File 'lib/wrappi/endpoint.rb', line 22

def options
  @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.cache_options(&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_requestObject



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_options = {})
  async_handler.call(self, async_options)
end

#bodyObject



37
# File 'lib/wrappi/endpoint.rb', line 37

def body; response.body end

#cache_keyObject



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_optionsObject



96
97
98
# File 'lib/wrappi/endpoint.rb', line 96

def cache_options
  self.class.instance_variable_get(:@cache_options)
end

#consummated_paramsObject

overridable



48
49
50
# File 'lib/wrappi/endpoint.rb', line 48

def consummated_params
  params
end

#error?Boolean

Returns:

  • (Boolean)


40
# File 'lib/wrappi/endpoint.rb', line 40

def error?; !success? end

#fixture_contentObject



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_nameObject



4
5
6
# File 'lib/wrappi/testing.rb', line 4

def fixture_name
  "#{self.class}#{fixture_params_key}.json"
end

#fixture_params_keyObject



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

#flushObject



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(async_options = {})
  instance_exec(async_options, &async_callback)
end

#responseObject Also known as: call



32
33
34
# File 'lib/wrappi/endpoint.rb', line 32

def response
  @response ||= Executer.call(self)
end

#retry_ifObject



93
94
95
# File 'lib/wrappi/endpoint.rb', line 93

def retry_if
  self.class.instance_variable_get(:@retry_if)
end

#statusObject



39
# File 'lib/wrappi/endpoint.rb', line 39

def status; response.status end

#success?Boolean

Returns:

  • (Boolean)


38
# File 'lib/wrappi/endpoint.rb', line 38

def success?; response.success? end

#urlObject



52
53
54
# File 'lib/wrappi/endpoint.rb', line 52

def url
  _url.to_s
end

#url_with_paramsObject



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