# File lib/gh/response.rb, line 21
    def initialize(body = "{}", headers = {}, url = nil)
      @url     = url
      @headers = Hash[headers.map { |k,v| [k.downcase, v] }]

      case body
      when nil, ''              then @data = {}
      when respond_to(:to_str)  then @body = body.to_str
      when respond_to(:to_hash) then @data = body.to_hash
      when respond_to(:to_ary)  then @data = body.to_ary
      else raise ArgumentError, "cannot parse #{body.inspect}"
      end

      @body.force_encoding("utf-8") if @body.respond_to? :force_encoding
      @body ||= MultiJson.encode(@data)
      @data ||= MultiJson.decode(@body)
    rescue EncodingError => error
      fail "Invalid encoding in #{url.to_s}, please contact github."
    end