示例#1
0
        /// <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));
        }
示例#2
0
        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);
        }