class HttpTransportProvider

Public Class Methods

new(transport_identifier) click to toggle source
Calls superclass method
# File lib/http_transport_provider.rb, line 11
def initialize(transport_identifier)
  super(transport_identifier)
  @message_response = []
end

Public Instance Methods

configure(config) click to toggle source
# File lib/http_transport_provider.rb, line 16
def configure(config)
  if ConfigurationValidation.valid?(config)
    @configuration = config
  end
end
receive_message() click to toggle source
# File lib/http_transport_provider.rb, line 35
def receive_message
  @message_response.pop.body
end
send_message(uri, message) click to toggle source
# File lib/http_transport_provider.rb, line 23
def send_message(uri, message)
  #TODO: Message validation
  uri = URI::parse uri
  raise NotConfigured if @configuration.nil?

  request = Request.build(uri, @configuration, message['body'])
  response = connection(uri).request(request)

  @message_response.push(response)
  map_response_code_to_delivery_status(response.code)
end

Private Instance Methods

connection(uri) click to toggle source

TODO: enable/disable verify_mode

# File lib/http_transport_provider.rb, line 41
def connection(uri)
  connection = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https', :verify_mode => OpenSSL::SSL::VERIFY_NONE)
end
map_response_code_to_delivery_status(code) click to toggle source
# File lib/http_transport_provider.rb, line 45
def map_response_code_to_delivery_status(code)
  if code == '200'
    DELIVERY_SUCCESS
  elsif code == '408'
    DELIVERY_TIMEOUT
  elsif code == '401'
    DELIVERY_REJECTED
  elsif code == '500'
    DELIVERY_FAILURE
  elsif code == '508'
    DELIVERY_PENDING
  elsif code == '208'
    "Delivery status unkown"
  else
    "Delivery status unsupported"
  end
end