public static void NodeReturnsDirectiveNameWhenPositionIsWithinDirectiveName() { var node = new DirectiveName(42, string.Empty); var builder = new TemplateCompletionBuilder(42); builder.Visit(node); Assert.Same(node, builder.Node); }
protected internal override void VisitDirectiveName(DirectiveName node) { base.VisitDirectiveName(node); if (node.Span.Start <= this.position && this.position <= node.Span.End) { this.Completions = DirectiveDescriptor.GetBuiltInDirectives() .Where(descriptor => !string.IsNullOrEmpty(descriptor.DisplayName)) // Skip custom directives .Select(CreateDirectiveCompletion) .ToList(); this.Node = node; } }
private Object HandleGetTargetTemperatureRequest( DirectiveName responseName, AlexaThermostat device ) { TemperatureMode mode = new TemperatureMode() { Value = device.mode.ToString(), }; GetTargetTemperatureResponsePayload payload; if (device.mode == ThermostatMode.OFF) { payload = new GetTargetTemperatureResponsePayload() { TemperatureMode = mode }; } else { payload = new GetTargetTemperatureResponsePayload() { TargetTemperature = new TargetTemperature() { Value = device.targetTemperatureC, }, TemperatureMode = mode }; } return(new Response() { Header = new Header() { Namespace = "Alexa.ConnectedHome.Query", Name = responseName, PayloadVersion = "2", MessageID = Guid.NewGuid(), }, Payload = payload, }); }
private Object HandleGetTemperatureReadingRequest( DirectiveName responseName, AlexaThermostat device ) { return(new Response() { Header = new Header() { Namespace = "Alexa.ConnectedHome.Query", Name = responseName, PayloadVersion = "2", MessageID = Guid.NewGuid(), }, Payload = new GetTemperatureReadingResponsePayload() { TemperatureReading = new TargetTemperature() { Value = device.currentTemperatureC, } }, }); }
private Object HandleTemperatureChangeRequest( DirectiveName responseName, AlexaThermostat device, double setTempC ) { if (device.mode == ThermostatMode.OFF) { return(new Response() { Header = new Header() { Namespace = "Alexa.ConnectedHome.Control", Name = DirectiveName.UnwillingToSetValueError, PayloadVersion = "2", MessageID = Guid.NewGuid(), }, Payload = new UnwillingToSetValueErrorPayload() { ErrorInfo = new ErrorInfo() { Code = "THERMOSTAT_IS_OFF", Description = "Can't complete requested operation because the thermostat is off", } }, }); } double setTempF = setTempC * 1.8 + 32.0; ushort convertedTemp = Convert.ToUInt16(Math.Round(setTempF * 10.0, 0)); device.SetTemp(convertedTemp); return(new Response() { Header = new Header() { Namespace = "Alexa.ConnectedHome.Control", Name = responseName, PayloadVersion = "2", MessageID = Guid.NewGuid(), }, Payload = new SetTargetTemperatureConfirmationPayload() { TargetTemperature = new TargetTemperature() { Value = setTempC, }, TemperatureMode = new TemperatureMode() { Value = device.mode.ToString(), }, PreviousState = new TargetTemperaturePreviousState() { TargetTemperature = new TargetTemperature() { Value = device.targetTemperatureC, }, TemperatureMode = new TemperatureMode() { Value = device.mode.ToString(), } }, }, }); }
private Object HandleDeltaPercentageRequest(JObject request, string eventName, DirectiveName responseType) { DeltaPercentageRequestPayload payload = JsonConvert.DeserializeObject <DeltaPercentageRequestPayload>( request["payload"].ToString() ); string DeviceID = payload.Appliance.ApplianceId; double setPercent = payload.DeltaPercentage.Value; ushort scaledPercent = Convert.ToUInt16(Math.Round(setPercent * 655.35, 0)); Appliance device = DeviceList.GetDevice(DeviceID); ILevelable levelableDevice = device as ILevelable; if (levelableDevice != null) { if (eventName == "raise") { levelableDevice.RaiseLevel(scaledPercent); } else if (eventName == "lower") { levelableDevice.LowerLevel(scaledPercent); } } return(new Response() { Header = new Header() { Namespace = "Alexa.ConnectedHome.Control", Name = responseType, PayloadVersion = "2", MessageID = Guid.NewGuid(), }, Payload = new Dictionary <string, string> { }, }); }