Class: Alchemrest::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/alchemrest/request.rb,
lib/alchemrest/request/returns.rb,
lib/alchemrest/request/endpoint.rb

Defined Under Namespace

Classes: Endpoint, Returns

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.disable_response_captureObject



24
25
26
# File 'lib/alchemrest/request.rb', line 24

def self.disable_response_capture
  define_method(:response_capture_enabled) { false }
end

.enable_response_captureObject



20
21
22
# File 'lib/alchemrest/request.rb', line 20

def self.enable_response_capture
  define_method(:response_capture_enabled) { true }
end

.endpoint(http_method, template, &block) ⇒ Object



14
15
16
17
18
# File 'lib/alchemrest/request.rb', line 14

def self.endpoint(http_method, template, &block)
  builder_block = block
  endpoint_definition = EndpointDefinition.new(template:, http_method: http_method.to_s, builder_block:)
  include Endpoint.new(endpoint_definition)
end

.returns(domain_type, path_to_payload: nil, allow_empty_response: false) ⇒ Object



10
11
12
# File 'lib/alchemrest/request.rb', line 10

def self.returns(domain_type, path_to_payload: nil, allow_empty_response: false)
  include Returns.new(domain_type, path_to_payload, allow_empty_response)
end

Instance Method Details

#bodyObject



44
45
46
# File 'lib/alchemrest/request.rb', line 44

def body
  nil
end

#capture_transformerObject



54
55
56
57
58
59
# File 'lib/alchemrest/request.rb', line 54

def capture_transformer
  Response::Pipeline.new(
    Response::Pipeline::ExtractPayload.new(nil, true),
    Response::Pipeline::Sanitize.new,
  )
end

#default_headersObject



36
37
38
# File 'lib/alchemrest/request.rb', line 36

def default_headers
  DEFAULT_HEADERS
end

#headersObject



40
41
42
# File 'lib/alchemrest/request.rb', line 40

def headers
  {}
end

#http_methodObject

Raises:

  • (NotImplementedError)


32
33
34
# File 'lib/alchemrest/request.rb', line 32

def http_method
  raise NotImplementedError, 'This is an abstract base method. Implement in your subclass.'
end

#identifierObject



70
71
72
# File 'lib/alchemrest/request.rb', line 70

def identifier
  "#{http_method.upcase} #{path}"
end

#pathObject

Raises:

  • (NotImplementedError)


28
29
30
# File 'lib/alchemrest/request.rb', line 28

def path
  raise NotImplementedError, 'This is an abstract base method. Implement in your subclass.'
end

#response_capture_enabledObject



61
62
63
# File 'lib/alchemrest/request.rb', line 61

def response_capture_enabled
  true
end

#response_transformerObject



48
49
50
51
52
# File 'lib/alchemrest/request.rb', line 48

def response_transformer
  Response::Pipeline.new(
    Response::Pipeline::WasSuccessful.new,
  )
end

#transform_response(response) ⇒ Object



65
66
67
68
# File 'lib/alchemrest/request.rb', line 65

def transform_response(response)
  capture!(response:)
  response_transformer.call(response)
end