# frozen_string_literal: true module Paratika class InvalidSignatureError < ::StandardError; end class InvalidResponseCodeError < ::StandardError; end class Response attr_reader :data def initialize(response) @data = JSON.parse(response.body).transform_keys!{ |k| snake_case(k) }.symbolize_keys @data.merge!({ time: DateTime.now, success: data[:response_code] == '00' }) @data.merge!(error: ERROR_MAP[@data[:error_code]]) unless @data[:success] end private def snake_case(str) str.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2') .gsub(/([a-z\d])([A-Z])/, '\1_\2') .downcase end end end