Sha256: f3a2ada2f5e33b7ed986a8e3e6182faa07a09b5b3b40d02e3388096113165027

Contents?: true

Size: 640 Bytes

Versions: 1

Compression:

Stored size: 640 Bytes

Contents

require 'json'

module Smsc
  # Response parse
  class Response
    class << self
      def parse(body, request_params)
        json = JSON.parse(body, symbolize_names: true)
        raise_client_errors(json, request_params[:errors] || {})

        request_params[:model].new(json)
      end

      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
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
smsc_ru-0.1.0 lib/smsc/response.rb