Class: Operaton::Bpm::Client::Impl::RequestExecutor

Inherits:
Object
  • Object
show all
Defined in:
lib/operaton/bpm/client/impl/request_executor.rb

Overview

Mirrors org.operaton.bpm.client.impl.RequestExecutor, built on Net::HTTP instead of Apache HttpClient.

Constant Summary collapse

HEADER_CONTENT_TYPE_JSON =
["Content-Type", "application/json"].freeze
HEADER_USER_AGENT =
["User-Agent", "Operaton External Task Client"].freeze
VOID =

Sentinels standing in for the Java response-class parameters

:void
BYTES =
:bytes

Instance Method Summary collapse

Constructor Details

#initialize(object_mapper, interceptor_handler: nil, http_customizer: nil, read_timeout: 60) ⇒ RequestExecutor

Returns a new instance of RequestExecutor.



28
29
30
31
32
33
34
# File 'lib/operaton/bpm/client/impl/request_executor.rb', line 28

def initialize(object_mapper, interceptor_handler: nil, http_customizer: nil, read_timeout: 60)
  @object_mapper = object_mapper
  @interceptor_handler = interceptor_handler
  @http_customizer = http_customizer
  @read_timeout = read_timeout
  @logger = ExternalTaskClientLogger.engine_client_logger
end

Instance Method Details

#get_request(resource_url) ⇒ Object



50
51
52
53
54
55
56
57
58
# File 'lib/operaton/bpm/client/impl/request_executor.rb', line 50

def get_request(resource_url)
  uri = URI(resource_url)

  request = Net::HTTP::Get.new(uri)
  request[HEADER_USER_AGENT[0]] = HEADER_USER_AGENT[1]
  request[HEADER_CONTENT_TYPE_JSON[0]] = HEADER_CONTENT_TYPE_JSON[1]

  execute_request(uri, request, BYTES)
end

#post_request(resource_url, request_dto, response_type) ⇒ Object

response_type: VOID, BYTES, or a class/array responding to .from_json. Passing [SomeDto] deserializes a JSON array into a list of DTOs.



38
39
40
41
42
43
44
45
46
47
48
# File 'lib/operaton/bpm/client/impl/request_executor.rb', line 38

def post_request(resource_url, request_dto, response_type)
  body = serialize_request(request_dto)
  uri = URI(resource_url)

  request = Net::HTTP::Post.new(uri)
  request[HEADER_USER_AGENT[0]] = HEADER_USER_AGENT[1]
  request[HEADER_CONTENT_TYPE_JSON[0]] = HEADER_CONTENT_TYPE_JSON[1]
  request.body = body

  execute_request(uri, request, response_type)
end