Class: Prolenea::ProleneaResponseMiddleware
- Inherits:
-
Faraday::Response::Middleware
- Object
- Faraday::Response::Middleware
- Prolenea::ProleneaResponseMiddleware
- Defined in:
- lib/prolenea/middleware/prolenea_response_middleware.rb
Constant Summary collapse
- PORTED_DATE_TIMEZONE =
'-0500'- PORTED_DATE_FORMAT =
'%Y%m%d%H'- RESPONSE_ROW_NAMES =
%w( number local_routing_number ported_date alternative_spid alternative_spid_name line_type operating_company_number operating_company_name lata city state )
Instance Method Summary collapse
- #on_complete(env) ⇒ Object
- #parse_body(body) ⇒ Object
- #parse_number_info(number_info) ⇒ Object
- #parse_ported_date(s) ⇒ Object
Instance Method Details
#on_complete(env) ⇒ Object
22 23 24 25 26 27 28 29 30 31 |
# 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) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# 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) ⇒ Object
48 49 50 51 52 53 54 55 56 |
# 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) ⇒ Object
58 59 60 61 62 |
# 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 |