/// <summary> /// Обработчик запроса на регистрацию ключей. /// </summary> /// <param name="serializer">Сериализатор протокола.</param> /// <param name="postData">Данные запроса.</param> /// <param name="hostAddress">Адрес клиента.</param> /// <returns>Результат.</returns> private string ProcessRegisterPublicKeyRequest(ProtocolSerializer serializer, string postData, string hostAddress) { var request = serializer.DeserializeRegisterPublicKeyRequest(postData); _logger.InfoFormat("Получен запрос на регистрацию нового ключа для пользователя {0} с клиента {1}", request.UserLogin, hostAddress); var entity = new UserPublicKeyRequest(); var user = RemontinkaServer.Instance.DataStore.GetUser(request.UserLogin); if (user == null) { _logger.ErrorFormat("Нет пользователя для запроса по публичному ключю {0} с клиента {1}", request.UserLogin, hostAddress); return(CreateErrorResponse(serializer, "Нет такого пользователя")); } //if entity.ClientIdentifier = hostAddress; entity.KeyNotes = request.KeyNotes; entity.PublicKeyData = request.PublicKeyData; entity.UserID = user.UserID; entity.EventDate = request.EventDate; if (request.ClientUserDomainID != null) { if (request.ClientUserDomainID != user.UserDomainID) { _logger.ErrorFormat("В запросе на регистрацию нового ключа не совпадают домены {0} {1}", request.ClientUserDomainID, user.UserDomainID); return(CreateErrorResponse(serializer, "Домены не совпадают")); } //if } //if var number = RemontinkaServer.Instance.DataStore.GetNewOrderNumber(user.UserDomainID).ToString( CultureInfo.InvariantCulture); entity.Number = string.Format(NewPublicKeyNumberFormat, number); RemontinkaServer.Instance.DataStore.SaveUserPublicKeyRequest(entity); var response = new RegisterPublicKeyResponse(); response.Number = entity.Number; response.UserDomainID = user.UserDomainID; return(serializer.Serialize(response)); }
public void RegisterPublicKeyResponseTest() { var message = new RegisterPublicKeyResponse(); Assert.AreEqual(message.Kind, MessageKind.RegisterPublicKeyResponse); message.Number = "Number"; message.UserDomainID = Guid.NewGuid(); var serializer = new ProtocolSerializer(ProtocolVersion.Version10); var data = serializer.Serialize(message); Assert.IsNotNull(data); Assert.AreEqual(serializer.GetMessageInfoOrNull(data).Kind, MessageKind.RegisterPublicKeyResponse); var savedMessage = serializer.DeserializeRegisterPublicKeyResponse(data); Assert.IsNotNull(savedMessage); Assert.AreEqual(message.Kind, savedMessage.Kind); Assert.AreEqual(message.Version, savedMessage.Version); Assert.AreEqual(message.Number, savedMessage.Number); Assert.AreEqual(message.UserDomainID, savedMessage.UserDomainID); }