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); } }
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); }
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); } }
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); } } } }