private Task <MethodResponse> UnsetConsoleSession(MethodRequest methodRequest, object userContext) { FireDirectMethodInvoked(methodRequest.Name, methodRequest); string json = Encoding.UTF8.GetString(methodRequest.Data); var consoleDsn = JsonConvert.DeserializeObject <string>(json); // if the existing MobileSession matches the value provided, then unset it: Task <MethodResponse> task = null; if (ConsoleSession != null && ConsoleSession.Equals(consoleDsn)) { ConsoleSession = null; ConsoleState = null; // Acknowlege the direct method call with a 200 success message string jsonResponse = JsonConvert.SerializeObject(new DirectMethodResponse() { Result = $"Executed direct method: {methodRequest.Name}" }); task = Task.FromResult(new MethodResponse(Encoding.UTF8.GetBytes(jsonResponse), (int)HttpStatusCode.OK)); } else { // return 409 Conflict: string jsonResponse = JsonConvert.SerializeObject(new DirectMethodResponse() { Result = $"Console session did not match (consoleDsn: {consoleDsn} current value: {ConsoleSession})." }); task = Task.FromResult(new MethodResponse(Encoding.UTF8.GetBytes(jsonResponse), (int)HttpStatusCode.Conflict)); } FireDirectMethodResponseSent(methodRequest.Name, task.Result); return(task); }
private Task <MethodResponse> SetConsoleTelemetry(MethodRequest methodRequest, object userContext) { FireDirectMethodInvoked(methodRequest.Name, methodRequest); string json = Encoding.UTF8.GetString(methodRequest.Data); var consoleTelemetry = JsonConvert.DeserializeObject <ConsoleTelemetry>(json); Task <MethodResponse> task = null; if (ConsoleSession != null && ConsoleSession.Equals(consoleTelemetry.Id)) { ConsoleTelemetry = consoleTelemetry; // Acknowlege the direct method call with a 200 success message string jsonResponse = JsonConvert.SerializeObject(new DirectMethodResponse() { Result = $"Executed direct method: {methodRequest.Name}" }); task = Task.FromResult(new MethodResponse(Encoding.UTF8.GetBytes(jsonResponse), (int)HttpStatusCode.OK)); } FireDirectMethodResponseSent(methodRequest.Name, task.Result); return(task); }