コード例 #1
0
        public void keyConfirm(DoorKey key)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            string responseText             = "";
            string CallbackUrl = key.CallbackUrl;

            try
            {
                string serializedResult = serializer.Serialize(key);

                WebClient client = new WebClient();
                client.Headers.Add("Content-Type", "application/json");
                client.Headers.Add("X-AUTH-TOKEN", config.Token);

                client.Encoding = System.Text.Encoding.UTF8;
                string reply = client.UploadString(CallbackUrl, "PUT", serializedResult);
            }
            catch (WebException exception)
            {
                var responseStream = exception.Response?.GetResponseStream();
                if (responseStream != null)
                {
                    using (var reader = new StreamReader(responseStream))
                    {
                        responseText = reader.ReadToEnd();
                    }
                }
                Console.WriteLine("Ошибка при отправке запроса на " + key.CallbackUrl + ": " + responseText);
            }
            catch (Exception err)
            {
                Console.WriteLine("Ошибка при отправке запроса на " + key.CallbackUrl + ": " + err.Message);
            }
        }
コード例 #2
0
        public void issue(DoorKey doorKey)
        {
            try {
                int    sectorNumber = doorKey.SectorNumber;
                string cardType     = doorKey.CardType;
                string expiredAt    = doorKey.ExpiredAt;
                string createdAt    = doorKey.CreatedAt;
                string startPeriod  = doorKey.StartPeriod;
                string endPeriod    = doorKey.EndPeriod;
                int    totalRooms   = doorKey.Rooms.Length;
                string roomsInfo    = (totalRooms + string.Join("", doorKey.Rooms)).PadRight(100, '0');
                string cardInfo     = (cardType + expiredAt + startPeriod + endPeriod + createdAt).PadRight(100, '0');

                byte[] cardInfoBytes  = System.Text.Encoding.GetEncoding("gb2312").GetBytes(cardInfo);
                byte[] roomsInfoBytes = System.Text.Encoding.GetEncoding("gb2312").GetBytes(roomsInfo);

                Console.WriteLine("Sector number: " + sectorNumber);
                Console.WriteLine("Card type: " + cardType);
                Console.WriteLine("Expired at: " + expiredAt);
                Console.WriteLine("Created at: " + expiredAt);
                Console.WriteLine("Start period: " + startPeriod);
                Console.WriteLine("End period: " + endPeriod);
                Console.WriteLine("Total rooms: " + totalRooms);
                Console.WriteLine("Rooms info: " + roomsInfo);
                Console.WriteLine("Card info: " + cardInfo);

                int encodingResult = bw893_wrkey(sectorNumber, cardInfoBytes, roomsInfoBytes);

                if (encodingResult == 0)
                {
                    Console.WriteLine("Encoding Success!");

                    doorKey.Status            = DoorKey.StatusSuccess;
                    doorKey.EncoderAnswer     = 0;
                    doorKey.EncoderAnswerText = null;
                }
                else
                {
                    Console.WriteLine("Encoding Error: " + encodingResult);

                    doorKey.Status            = DoorKey.StatusFail;
                    doorKey.EncoderAnswer     = encodingResult;
                    doorKey.EncoderAnswerText = null;
                }
            }
            catch (Exception err)
            {
                doorKey.Status            = DoorKey.StatusFail;
                doorKey.EncoderAnswer     = 1;
                doorKey.EncoderAnswerText = err.Message;

                Console.WriteLine("Encoding Error: " + err.ToString());
            }

            callbackSender.send(doorKey);
        }
コード例 #3
0
        public void send(DoorKey doorKey)
        {
            WebClient client = new WebClient();

            client.Headers.Add("Content-Type", "application/json");
            client.Headers.Add("X-AUTH-TOKEN", config.Token);
            client.Encoding = System.Text.Encoding.UTF8;

            string responseText = "";

            Console.WriteLine("Отправка результата на сервер: " + doorKey.CallbackUrl);

            try
            {
                string doorKeySerialized = serializer.Serialize(doorKey);
                Console.WriteLine(doorKeySerialized);

                string response = client.UploadString(doorKey.CallbackUrl, "PUT", doorKeySerialized);
                Console.WriteLine("Ответ сервера: " + response);
            }
            catch (WebException exception)
            {
                var responseStream = exception.Response?.GetResponseStream();
                if (responseStream != null)
                {
                    using (var reader = new StreamReader(responseStream))
                    {
                        responseText = reader.ReadToEnd();
                    }
                }
                Console.WriteLine("Ошибка при отправке запроса на " + doorKey.CallbackUrl + ": " + responseText);
            }
            catch (Exception err)
            {
                Console.WriteLine("Ошибка при отправке запроса на " + doorKey.CallbackUrl + ": " + err.Message);
            }
        }
コード例 #4
0
        public void run()
        {
            Console.WriteLine("Клиент запущен: " + config.MercureURL);

            using (Stream stream = webClient.OpenRead(config.MercureURL))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    string line = null;
                    while (null != (line = reader.ReadLine()))
                    {
                        var firstSeparator = line.IndexOf(":");

                        if (!(firstSeparator > 1))
                        {
                            continue;
                        }

                        var firstPart = line.Substring(0, firstSeparator);

                        if (firstPart != "data")
                        {
                            continue;
                        }

                        string secondPart  = line.Substring(firstSeparator + 1);
                        string jsonContent = secondPart.Trim();
                        Console.WriteLine("Получен новый ключ: " + jsonContent);
                        DoorKey doorKey = serializer.Deserialize <DoorKey>(jsonContent);
                        Console.WriteLine(doorKey);

                        keyIssuer.issue(doorKey);
                    }
                }
            }
        }