class Nordea::Siirto::Protocols::Base

This class may be used as a base class for protocol implementations. Sub-classes should implement :send_request and :parse_response methods correctly.

Gem expects protocol implementation to respond to :send! method, which takes in a generic Siirto request object, and returns a generic Siirto response object.

Public Instance Methods

send!(request) click to toggle source

Public interface of protocol implementations @param [Nordea::Siirto::Request] @return [Nordea::Siirto::Response] rubocop:disable MethodLength,AbcSize,LineLength

# File lib/nordea/siirto/protocols/base.rb, line 17
def send!(request)
  uri = request.uri
  Nordea::Siirto.log("Sending request to: #{uri}")

  # Send request
  begin
    protocol_response = send_request(request)
  rescue StandardError => e
    Nordea::Siirto.log("Failed to send request: #{request.inspect} #{e.message}")
    raise
  end

  # Parse response
  begin
    response = parse_response(protocol_response)
  rescue StandardError => e
    Nordea::Siirto.log("Failed to parse response: #{protocol_response.inspect} #{e.message}")
    raise
  end

  # Log response
  message = "Server responds: #{response.message}"
  message << " #{response.code}"
  unless response.body['access_token'] # do not log token
    message << " #{response.body}"
  end
  Nordea::Siirto.log(message)

  response
end

Private Instance Methods

parse_response(protocol_response) click to toggle source

Sub-class must implement @params [Object] Protocol-specific response object @return [Nordea::Siirto::Response]

# File lib/nordea/siirto/protocols/base.rb, line 61
def parse_response(protocol_response)
  raise NotImplementedError, 'Sub-class must implement'
end
send_request(request) click to toggle source

Sub-class must implement @param [Nordea::Siirto::Request] @return [Object] Protocol-specific response object

# File lib/nordea/siirto/protocols/base.rb, line 54
def send_request(request)
  raise NotImplementedError, 'Sub-class must implement'
end