class Prolenea::ProleneaResponseMiddleware

Constants

PORTED_DATE_FORMAT
PORTED_DATE_TIMEZONE
RESPONSE_ROW_NAMES

Public Instance Methods

on_complete(env) click to toggle source
# File lib/prolenea/middleware/prolenea_response_middleware.rb, line 22
def on_complete(env)
  case env[:status]
  when 200
    env[:parsed_body] = self.parse_body env[:body]
  else
    raise ProleneaRequestError.new({}), "Recieved an unexpected HTTP response code #{env[:status]}"
  end

  env
end
parse_body(body) click to toggle source
# File lib/prolenea/middleware/prolenea_response_middleware.rb, line 33
def parse_body(body)
  number_info = {}
  rows = body.split("\r\n")

  if rows.length != RESPONSE_ROW_NAMES.length
    raise ProleneaRequestError.new({}), "Unable to parse HTTP response body"
  end

  rows.each_with_index do |row, i|
    number_info[RESPONSE_ROW_NAMES[i]] = (row == '-' ? nil : row)
  end

  self.parse_number_info number_info
end
parse_number_info(number_info) click to toggle source
# File lib/prolenea/middleware/prolenea_response_middleware.rb, line 48
def parse_number_info(number_info)
  if number_info['ported_date']
    parsed_ported_date = self.parse_ported_date number_info['ported_date']

    number_info['ported_date'] = parsed_ported_date.iso8601
  end

  number_info
end
parse_ported_date(s) click to toggle source
# File lib/prolenea/middleware/prolenea_response_middleware.rb, line 58
def parse_ported_date(s)
  if !s.nil? && !s.empty?
    DateTime.parse "#{s} #{PORTED_DATE_TIMEZONE}", "#{PORTED_DATE_FORMAT} %z"
  end
end