response.rb 654 B

123456789101112131415161718192021
  1. # frozen_string_literal: true
  2. module Paratika
  3. class InvalidSignatureError < ::StandardError; end
  4. class InvalidResponseCodeError < ::StandardError; end
  5. class Response
  6. attr_reader :data
  7. def initialize(response)
  8. @data = JSON.parse(response.body).transform_keys!{ |k| snake_case(k) }.symbolize_keys
  9. @data.merge!({ time: DateTime.now, success: data[:response_code] == '00' })
  10. @data.merge!(error: ERROR_MAP[@data[:error_code]]) unless @data[:success]
  11. end
  12. private
  13. def snake_case(str)
  14. str.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
  15. .gsub(/([a-z\d])([A-Z])/, '\1_\2')
  16. .downcase
  17. end
  18. end
  19. end