Sha256: 8ed2fd5448605ba04718cf2009d89c6bac72e08b117c4bcbe707df3ac6fc25d0

Contents?: true

Size: 578 Bytes

Versions: 5

Compression:

Stored size: 578 Bytes

Contents

require 'ostruct'
require 'perfect_audit/error'

module PerfectAudit
  class ResponseParser
    def self.parse(response)
      struct = OpenStruct.new(JSON.parse(response))

      raise PerfectAudit::Error.new(struct.message, struct.code) if struct.status != 200

      case struct.response
      when Hash
        struct.response.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
      when Array
        struct.response.map do |item|
          item.inject({}){ |memo,(k,v)| memo[k.to_sym] = v; memo }
        end
      else
        struct.response
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
perfect_audit-0.2.3 lib/perfect_audit/response_parser.rb
perfect_audit-0.2.2 lib/perfect_audit/response_parser.rb
perfect_audit-0.2.1 lib/perfect_audit/response_parser.rb
perfect_audit-0.2.0 lib/perfect_audit/response_parser.rb
perfect_audit-0.1.5 lib/perfect_audit/response_parser.rb