protected async Task <JObject> PerformPassthroughRequest(AlexaSmartHomeRequest request, Configuration config, ILambdaContext lambdaContext) { var client = new PubSubClient(config, lambdaContext); Log.Debug(lambdaContext, "Starting passthrough..."); var sw = Stopwatch.StartNew(); JObject response = await client.RequestBridgePassthrough(Meta.AloxiMessageOperation.PipeAlexaRequest, JObject.FromObject(request, this.json)); sw.Stop(); if (response == null) { Log.Warn(lambdaContext, $"Passthrough completed in {sw.Elapsed.TotalSeconds}s without result"); } else { Log.Info(lambdaContext, $"Successful passthrough, took {sw.Elapsed.TotalSeconds}s"); } return(response); }
private async Task <JObject> PerformEchoRequest(JObject payload, Configuration config, ILambdaContext lambdaContext) { var client = new PubSubClient(config, lambdaContext); var sw = Stopwatch.StartNew(); EchoPayload outgoingEcho = new EchoPayload() { Salt = Guid.NewGuid().ToString() }; EchoPayload response = await client.RequestBridge <EchoPayload>(AloxiMessageOperation.Echo, outgoingEcho); sw.Stop(); if (!(response?.Salt == outgoingEcho.Salt)) { throw new Exception("Echo response invalid"); } Log.Info(lambdaContext, $"Successful echo, took {sw.Elapsed.TotalSeconds}s"); return(CreateResponse(new { Message = "Echo fine", DurationInSeconds = sw.Elapsed.TotalSeconds, Salt = response.Salt })); }