Sha256: 9003b51c6c2e1f34a53532d1b45bf05422f436a5e0b93d24836e79cbf7738f87

Contents?: true

Size: 1003 Bytes

Versions: 7

Compression:

Stored size: 1003 Bytes

Contents

# frozen_string_literal: true

module EasyPost::InternalUtilities::Json
  def self.convert_json_to_object(data, cls = EasyPost::Models::EasyPostObject)
    data = parse_json(data) if data.is_a?(String) # Parse JSON to a Hash or Array if it's a string
    if data.is_a?(Array)
      # Deserialize array data into an array of objects
      data.map { |i| convert_json_to_object(i, cls) }
    elsif data.is_a?(Hash)
      # Deserialize hash data into a new object instance
      cls.new(data)
    else
      # data is neither a Hash nor Array (but somehow was parsed as JSON? This should never happen)
      data
    end
  end

  def self.parse_json(data)
    return if data.nil?

    JSON.parse(data)
  rescue JSON::ParserError
    data # Not JSON, return the original data (used mostly when dealing with final values like strings, booleans, etc.)
  end

  def self.http_response_is_json?(response)
    response['Content-Type'] ? response['Content-Type'].start_with?('application/json') : false
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
easypost-6.4.1 lib/easypost/utilities/json.rb
easypost-6.4.0 lib/easypost/utilities/json.rb
easypost-6.3.0 lib/easypost/utilities/json.rb
easypost-6.2.0 lib/easypost/utilities/json.rb
easypost-6.1.1 lib/easypost/utilities/json.rb
easypost-6.1.0 lib/easypost/utilities/json.rb
easypost-6.0.0 lib/easypost/utilities/json.rb