internal BeginAddSensorQueryParameters ValidateAddSensorQueryParameters(BeginAddSensorQueryParameters parameters) { var types = GetSensorTypes(parameters.ObjectId); RequestParser.ValidateAddSensorQueryTarget(types, parameters); return(parameters); }
protected async Task <int?> GetTmpIdAsync(int deviceId, ICommandParameters internalParams, CancellationToken token) { //Purposely not validating the QueryTarget for addsensor2; when adding the sensor for real we don't really need it, and //current evidence suggestly we can simply just ignore it var tmpIdParameters = new BeginAddSensorQueryParameters(deviceId, internalParams[Parameter.SensorType].ToString(), SynthesizeParameters(internalParams)); var tmpId = await client.GetAddSensorTmpIdAsync(tmpIdParameters, token).ConfigureAwait(false); if (tmpId == null) { throw new PrtgRequestException($"Failed to add sensor for sensor type '{internalParams[Parameter.SensorType]}': type was not valid or you do not have sufficient permissions on the specified object."); } return(tmpId); }
internal async Task <BeginAddSensorQueryParameters> ValidateAddSensorQueryParametersAsync(BeginAddSensorQueryParameters parameters) { var types = await GetSensorTypesAsync(parameters.ObjectId).ConfigureAwait(false); RequestParser.ValidateAddSensorQueryTarget(types, parameters); return(parameters); }
internal static void ValidateAddSensorQueryTarget(List <SensorTypeDescriptor> types, BeginAddSensorQueryParameters parameters) { var thisType = types.FirstOrDefault(t => string.Equals(t.Id, parameters.OriginalType, StringComparison.OrdinalIgnoreCase)); if (thisType == null) { if (parameters.QueryTarget == null) { throw new InvalidOperationException($"Cannot process query for sensor type '{parameters.OriginalType}': sensor type '{parameters.OriginalType}' is not valid."); } throw new InvalidOperationException($"Failed to validate query target '{parameters.QueryTarget}' on sensor type '{parameters.OriginalType}': sensor type '{parameters.OriginalType}' is not valid."); } if (parameters.QueryTarget == null) { if (thisType.QueryTargets != null && thisType.QueryTargets.Count > 0) { throw new InvalidOperationException($"Failed to process query for sensor type '{parameters.OriginalType}': a sensor query target is required, however none was specified. Please specify one of the following targets: {thisType.QueryTargets.ToQuotedList()}."); } else { return; } } if (thisType.QueryTargets == null || thisType.QueryTargets.Count == 0) { throw new InvalidOperationException($"Cannot specify query target '{parameters.QueryTarget}' on sensor type '{parameters.OriginalType}': type does not support query targets."); } var matchingArgument = thisType.QueryTargets.FirstOrDefault(a => string.Equals(a.Value, parameters.QueryTarget.Value, StringComparison.OrdinalIgnoreCase)); if (matchingArgument == null) { throw new InvalidOperationException($"Query target '{parameters.QueryTarget}' is not a valid target for sensor type '{parameters.OriginalType}' on device ID {parameters.ObjectId}. Please specify one of the following targets: {thisType.QueryTargets.ToQuotedList()}."); } parameters.QueryTarget = matchingArgument; }