class Smsc::Response

Response parse

Public Class Methods

parse(body, parse_configuration) click to toggle source

Parse and wrap response in models, raise errors

@param body [String] response body @param parse_configuration [Hash] response parse configuration

@raise [Smsc::ClientError] any of client errors

# File lib/smsc/response.rb, line 14
def parse(body, parse_configuration)
  json = JSON.parse(body, symbolize_names: true)
  raise_client_errors(json, parse_configuration[:errors] || {})

  parse_configuration[:model].new(json)
end
raise_client_errors(json, error_map) click to toggle source

Raise errors if response contain error code

@private

# File lib/smsc/response.rb, line 24
def raise_client_errors(json, error_map)
  error_code = json[:error_code]
  error_message = json[:error]
  return if error_code.nil?

  error_class = error_map[error_code.to_i]
  raise error_class, error_message unless error_class.nil?
  raise Smsc::ClientError, error_message
end