public IAsyncReactiveQbservable <TrafficInfo> GetRealTrafficInfoObservable(TrafficParameters parameters) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } bool hasValidRoute = (!string.IsNullOrEmpty(parameters.StartAddress) && !string.IsNullOrEmpty(parameters.EndAddress)) || (!string.IsNullOrEmpty(parameters.RouteId)); if (!hasValidRoute) { throw new ArgumentException(string.Format( "Invalid TrafficParameters: Either [start address:{0} and end address{1}] OR [routeid:{2}] must be provided", parameters.StartAddress, parameters.EndAddress, parameters.RouteId)); } var tuple = new Tuple <string, string, string, int, int>( parameters.StartAddress, parameters.EndAddress, parameters.RouteId, parameters.FlowParameters == null ? int.MaxValue : parameters.FlowParameters.NotificationThresholdInSeconds, parameters.FlowParameters == null ? int.MaxValue : parameters.FlowParameters.RenotificationThresholdInSeconds); return(GetObservable <TrafficParameters, TrafficInfo>(Constants.Observable.Real.TrafficInfo.Uri)(parameters)); }
public IAsyncReactiveQbservable <TrafficInfo> GetTrafficInfoObservable(TrafficParameters parameters) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } bool hasValidRoute = (!string.IsNullOrEmpty(parameters.StartAddress) && !string.IsNullOrEmpty(parameters.EndAddress)) || (!string.IsNullOrEmpty(parameters.RouteId)); if (!hasValidRoute) { throw new ArgumentException(string.Format( "Invalid TrafficParameters: Either [start address:{0} and end address{1}] OR [routeid:{2}] must be provided", parameters.StartAddress, parameters.EndAddress, parameters.RouteId)); } // TODO: Make a note for a design review - this logic won't execute // if the GetTrafficInfoObservable is used in an inner position, // e.g. inside a SelectMany. var tuple = new Tuple <string, string, string, int, int>( parameters.StartAddress, parameters.EndAddress, parameters.RouteId, parameters.FlowParameters == null ? int.MaxValue : parameters.FlowParameters.NotificationThresholdInSeconds, parameters.FlowParameters == null ? int.MaxValue : parameters.FlowParameters.RenotificationThresholdInSeconds); return(GetObservable <TrafficParameters, TrafficInfo>(Constants.Observable.Synthetic.TrafficInfo.Uri)(parameters)); }