public void Connect(IPAddress IPAddress, UInt16 Port, String PSK, UInt64 ClientID, ConnectionResponseHandler ConnectHandler)
 {
     AssertInitialized();
     if (IPAddress == null)
     {
         throw new ArgumentNullException("IPAddress");
     }
     if (Port == 0)
     {
         throw new ArgumentOutOfRangeException("Port", "Must be greater than 0");
     }
     if (PSK.Length != 64)
     {
         throw new Exception("Invalid PSK string length");
     }
     if (ClientID == 0)
     {
         throw new ArgumentOutOfRangeException("ClientID", "Must be greater than 0");
     }
     if (ConnectHandler == null)
     {
         throw new ArgumentNullException("ConnectionHandler");
     }
     this.IPAddress = IPAddress;
     this.ConnectionResponseHandler += ConnectHandler;
     Connect(IPAddress, Port, Utils.StringToByteArray(PSK), ClientID);
 }
        private static IConfigurationRoot LoadConfigurationFile()
        {
            IConfigurationBuilder builder = new ConfigurationBuilder()
                                            .SetBasePath(Directory.GetCurrentDirectory())
                                            .AddJsonFile(Configuration.CONFIG_FILE_NAME, optional: false, reloadOnChange: false);

            IConfigurationRoot configurationRoot = builder.Build();

            PaymentDirective.AddSupport();
            ConnectionResponseHandler.AddToRequestConverter();

            return(configurationRoot);
        }
        public void ConnectionResponseRequestDeserializesProperly()
        {
            ConnectionResponseHandler.AddToRequestConverter();
            var request = Utility.ExampleFileContent <ConnectionResponseRequest>("ConnectionResponseRequest.json");

            Assert.Equal("Upsell", request.Name);
            Assert.Equal("token", request.Token);

            Assert.Equal("200", request.Status.Code);
            Assert.Equal("test message", request.Status.Message);

            Assert.Equal("optional additional message", request.Payload.Message);
            Assert.Equal("amzn1.productId", request.Payload.ProductId);
            Assert.Equal(PurchaseResult.Accepted, request.Payload.PurchaseResult);
        }