HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/elite/node_modules/googlemaps/lib/utils/travelUtils.js
var travelUtils = {}

/**
 * Validates all arguments shared by directions and distance-matrix services
 *
 * Throws an error if validation fails.
 */
travelUtils.validateCommonArgs = function(args) {
  if (args.mode != null) {
    args.mode = args.mode.toLowerCase();
    if (args.mode !== 'driving' && args.mode !== 'walking' && args.mode !== 'bicycling' && args.mode !== 'transit') {
      throw new Error('Invalid transport mode: '+args.mode+'. Valid params.mode are [driving|walking|bicycling|transit]');
    }
    if (args.mode == 'transit') {
      if (args.departure_time == null && args.arrival_time == null) {
        throw new Error('When specifying params.mode = transit either params.departure_time or params.arrival_time must be provided');
      }
      if (args.waypoints != null) {
        throw new Error('It is not possible to specify waypoints when params.mode = transit');
      }
    } 
  }

  if (args.avoid != null) {
    args.avoid = args.avoid.toLowerCase();
    var argsArray = args.avoid.split('|');
    for (var argIdx in argsArray) {
      var argName = argsArray[argIdx];
      if (argName !== 'tolls' && argName !== 'highways' && argName !== 'ferries') {
        throw new Error('Invalid params.avoid: ' + argName + '. Valid params.avoid are [tolls|highways|ferries]');
      }
    }
  }

  if (args.units != null) {
    args.units = args.units.toLowerCase();
    if (args.units !== 'metric' && args.units !== 'imperial') {
      throw new Error('Invalid params.units: '+args.units+'. Valid params.units are [metric|imperial]');
    }
  }

  if (args.departure_time != null || args.arrival_time != null) {
    if (args.mode && args.mode !== 'driving' && args.mode !== 'transit') {
      throw new Error('params.departure_time or params.arrival_time can only be specified when params.mode = [driving|transit]');
    }
  }

  if (args.traffic_model != null) {
    if (args.mode && args.mode !== 'driving') {
      throw new Error('params.traffic_model can only be specified when params.mode = ["driving"|null]');
    }
    if (args.departure_time == null || args.departure_time < (new Date()).getTime()) {
      throw new Error('params.departure_time must be set and be after current time when params.traffic_model is set');
    }
    if (args.traffic_model !== 'best_guess' && args.traffic_model !== 'pessimistic' && args.traffic_model !== 'optimistic') {
      throw new Error('Invalid params.traffic_model: '+args.traffic_model+'. Valid params.traffic_model are [best_guess|pessimistic|optimistic]');
    }
  }
}

travelUtils.convertTargetTimes = function(args) {
  // convert departure_time in UNIX timestamp
  if (args.departure_time != null) {
    args.departure_time = Math.floor( args.departure_time/1000 )
  }

  // convert arrival_time in UNIX timestamp
  if (args.arrival_time != null) {
    args.arrival_time = Math.floor( args.arrival_time/1000 )
  }
}

module.exports = travelUtils;