public void UnserialiseStringToObject() { var ReadCardJSON = @"{""payload"":{""track1"":{""status"":""ok"",""data"":""123456789""},""track2"":{""status"":""dataMissing"",""data"":""123456789""},""track3"":{""status"":""dataInvalid"",""data"":""123456789""},""completionCode"":""success"",""errorDescription"":""OK""},""headers"":{""name"":""CardReader.ReadRawData"",""requestId"":""ee6d592b-483c-4c22-98ef-1070e290bf4f"",""type"":""completion""}}"; var assemblyName = Assembly.GetAssembly(typeof(ReadRawDataCompletion))?.GetName(); IsNotNull(assemblyName); var decoder = new MessageDecoder(MessageDecoder.AutoPopulateType.Response, assemblyName) { { typeof(ReadRawDataCompletion) } }; bool rc = decoder.TryUnserialise(ReadCardJSON, out object resultMessage); IsTrue(rc); IsNotNull(resultMessage); Completion <ReadRawDataCompletion.PayloadData> result = resultMessage as Completion <ReadRawDataCompletion.PayloadData> ?? throw new Exception(); IsNotNull(result); IsInstanceOfType(result, typeof(ReadRawDataCompletion)); ReadRawDataCompletion readCardCompletion = result as ReadRawDataCompletion; IsNotNull(readCardCompletion); IsNotNull(readCardCompletion.Payload); ReadRawDataCompletion.PayloadData readCardPayload = readCardCompletion.Payload as ReadRawDataCompletion.PayloadData; IsNotNull(readCardPayload); IsNotNull(readCardPayload.Track1); IsNotNull(readCardPayload.Track2); IsNotNull(readCardPayload.Track3); }
private static async Task DoAcceptCard() { // Create the connection object. This doesn't start anything... var cardReader = new XFS4IoTClient.ClientConnection( EndPoint: CardReaderUri ?? throw new NullReferenceException() ); // Open the actual network connection cardReader.ConnectAsync().Wait(1000); Logger.WriteLine($"Sending {nameof(ReadRawDataCommand)} command"); //MessageBox((IntPtr)0, "Send CardReader ReadRawData command to read chip card", "XFS4IoT Test Client", 0); // Create a new command and send it to the device var command = new ReadRawDataCommand(Guid.NewGuid().ToString(), new ReadRawDataCommand.PayloadData(60000, true, true, true, true, true, true, true, true, true, true, true, true, true, true)); await cardReader.SendCommandAsync(command); // Wait for a response from the device. Logger.WriteLine("Waiting for response... "); for (; ;) { object cmdResponse = await cardReader.ReceiveMessageAsync(); if (cmdResponse is null) { Logger.WriteLine($"Invalid response. {nameof(ReadRawDataCompletion)}"); break; } if (cmdResponse.GetType() != typeof(ReadRawDataCompletion)) { if (cmdResponse.GetType() == typeof(XFS4IoT.CardReader.Events.MediaInsertedEvent)) { Logger.WriteLine($"Execute event received. {nameof(XFS4IoT.CardReader.Events.MediaInsertedEvent)}"); continue; } else { Logger.WriteLine($"Unexpected type of response. {nameof(ReadRawDataCompletion)}"); } } ReadRawDataCompletion response = cmdResponse as ReadRawDataCompletion; if (response is null) { Logger.WriteLine($"Invalid type of response. {nameof(ReadRawDataCompletion)}"); } else { Logger.WriteLine($"Response received. {nameof(ReadRawDataCompletion)}"); } break; } }
public void SerialiseString() { var payload = new ReadRawDataCompletion.PayloadData(MessagePayload.CompletionCodeEnum.Success, "OK", null, new Track1Class(Track1Class.StatusEnum.Ok, "123456789"), new Track2Class(Track2Class.StatusEnum.DataMissing, "123456789"), new Track3Class(Track3Class.StatusEnum.DataInvalid, "123456789")); var response = new ReadRawDataCompletion("ee6d592b-483c-4c22-98ef-1070e290bf4f", payload); string res = response.Serialise(); AreEqual(@"{""payload"":{""track1"":{""status"":""ok"",""data"":""123456789""},""track2"":{""status"":""dataMissing"",""data"":""123456789""},""track3"":{""status"":""dataInvalid"",""data"":""123456789""},""completionCode"":""success"",""errorDescription"":""OK""},""headers"":{""name"":""CardReader.ReadRawData"",""requestId"":""ee6d592b-483c-4c22-98ef-1070e290bf4f"",""type"":""completion""}}", res); }
public void Constructor() { var payload = new ReadRawDataCompletion.PayloadData(MessagePayload.CompletionCodeEnum.Success, "OK", null, new Track1Class(Track1Class.StatusEnum.Ok, "123456789"), new Track2Class(Track2Class.StatusEnum.DataMissing, "123456789"), new Track3Class(Track3Class.StatusEnum.DataInvalid, "123456789")); var response = new ReadRawDataCompletion(Guid.NewGuid().ToString(), payload); IsNotNull(response.Payload.Track1); IsNotNull(response.Payload.Track2); IsNotNull(response.Payload.Track3); AreEqual("123456789", response.Payload.Track1.Data); AreEqual(Track3Class.StatusEnum.DataInvalid, response.Payload.Track3.Status); }