docs: def route(origin, destination, city_origin='Dresden', city_destination='Dresden', time=None,
            deparr='dep', eduroam=False, recommendations=False, *, raw=False):
      """
      VVO Online EFA TripRequest
      (GET http://efa.vvo-online.de:8080/dvb/XML_TRIP_REQUEST2)
  
      :param origin: Origin of route
      :param destination: Destination of route
      :param city_origin: City of origin
      :param city_destination: City of destination
      :param time: Unix timestamp of departure
      :param deparr: 'dep' for departure time (default), or 'arr' for arrival
      :param eduroam: Request from eduroam
      :param recommendations: Recommendations for interchange
      :param raw: Return raw response
      :return: List of single trips
      """
  
      assert deparr == 'dep' or deparr == 'arr'
  
      time = datetime.now() if time is None else datetime.fromtimestamp(int(time))
  
      url = 'http://efa.faplino.de/dvb/XML_TRIP_REQUEST2' if eduroam \
          else 'http://efa.vvo-online.de:8080/dvb/XML_TRIP_REQUEST2'
  
      try:
          r = requests.get(
              url=url,
              params={
                  'sessionID': '0',
                  'requestID': '0',
                  'language': 'de',
                  'execInst': 'normal',
                  'command': '',
                  'ptOptionsActive': '-1',
                  'itOptionsActive': '',
                  'itDateDay': time.day,
                  'itDateMonth': time.month,
                  'itDateYear': time.year,
                  'place_origin': city_origin,
                  'placeState_origin': 'empty',
                  'type_origin': 'stop',
                  'name_origin': origin,
                  'nameState_origin': 'empty',
                  'place_destination': city_destination,
                  'placeState_destination': 'empty',
                  'type_destination': 'stop',
                  'name_destination': destination,
                  'nameState_destination': 'empty',
                  'itdTripDateTimeDepArr': deparr,
                  'itdTimeHour': time.hour,
                  'idtTimeMinute': time.minute,
                  'outputFormat': 'JSON',
                  'coordOutputFormat': 'WGS84',
                  'coordOutputFormatTail': '0',
              },
              timeout=10
          )
          if r.status_code == 200:
              response = json.loads(r.content.decode('utf-8'))
          else:
              raise requests.HTTPError('HTTP Status: {}'.format(r.status_code))
      except requests.Timeout:
          print('Failed to access VVO TripRequest. Connection timed out. Are you connected to eduroam?')
          response = None
      except requests.RequestException as e:
          print('Failed to access VVO TripRequest. Request Exception', e)
          response = None
  
      if response is None:
          return None
  
      if raw:
          return response
  
      prettified = {
          'origin': response['origin']['points']['point']['name'],
          'destination': response['destination']['points']['point']['name'],
          'trips': [
              process_single_trip(single_trip) for single_trip in response['trips']
              ]
      }
  
      if recommendations:
          prettified['trips'] = [interchange_prediction(trip) for trip in prettified['trips']]
  
      return prettified