req

in lib/wit.rb [203:226]


  def req(logger, access_token, meth_class, path, params={}, payload={})
    uri = URI(WIT_API_HOST + path)
    uri.query = URI.encode_www_form(params)

    logger.debug("#{meth_class} #{uri}")

    request = meth_class.new(uri)
    request['authorization'] = 'Bearer ' + access_token
    request['accept'] = 'application/vnd.wit.' + WIT_API_VERSION + '+json'
    request.add_field 'Content-Type', 'application/json'
    request.body = payload.to_json

    Net::HTTP.start(uri.host, uri.port, {:use_ssl => uri.scheme == 'https'}) do |http|
      rsp = http.request(request)
      json = JSON.parse(rsp.body)
      if rsp.code.to_i != 200
        error_msg = (json.is_a?(Hash) and json.has_key?('error')) ?  json['error'] : json
        raise Error.new("Wit responded with an error: #{error_msg}")
      end
      logger.debug("#{meth_class} #{uri} #{json}")
      json
    end
  end