Method: Worldline::Acquiring::SDK::Communicator#put_with_binary_response

Defined in:
lib/worldline/acquiring/sdk/communicator.rb

#put_with_binary_response(relative_path, request_headers, request_parameters, request_body, context) {|Array<Worldline::Acquiring::SDK::Communication::ResponseHeader>, IO| ... } ⇒ Object

Performs a PUT request to the Worldline Acquiring platform and yields the response as the headers and body.

Yields:

Raises:



332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
# File 'lib/worldline/acquiring/sdk/communicator.rb', line 332

def put_with_binary_response(relative_path, request_headers, request_parameters, request_body, context)
  request_parameter_list = request_parameters && request_parameters.to_request_parameters
  uri = to_absolute_uri(relative_path, request_parameter_list)
  request_headers = [] if request_headers.nil?

  body = nil
  if request_body.is_a? Communication::MultipartFormDataObject
    request_headers.push(Communication::RequestHeader.new('Content-Type', request_body.content_type))
    body = request_body
  elsif request_body.is_a? Communication::MultipartFormDataRequest
    multipart = request_body.to_multipart_form_data_object
    request_headers.push(Communication::RequestHeader.new('Content-Type', multipart.content_type))
    body = multipart
  elsif !request_body.nil?
    request_headers.push(Communication::RequestHeader.new('Content-Type', 'application/json'))
    body = @marshaller.marshal(request_body)
  else
    # Set the content-type, even though there is no body, to prevent the httpClient from
    # adding a content-type header after authentication has been generated.
    request_headers.push(Communication::RequestHeader.new('Content-Type', 'text/plain'))
  end
  add_generic_headers('PUT', uri, request_headers, context)

  response_status_code, response_headers, response_body = nil
  @connection.put(uri, request_headers, body) do |status_code, headers, content|
    response_status_code = status_code
    response_headers = headers
    response_body = process_binary_response(status_code, content, headers, context) do |h, c|
      yield h, c
    end
  end
  throw_exception_if_necessary(response_body, response_status_code, response_headers, relative_path)
end