response.rb 573 B

1234567891011121314151617181920
  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. end
  11. private
  12. def snake_case(str)
  13. str.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
  14. .gsub(/([a-z\d])([A-Z])/, '\1_\2')
  15. .downcase
  16. end
  17. end
  18. end