Ejemplo n.º 1
0
        /// <summary>
        /// Осуществляет отправку данных на сервер и получение ответа.
        /// </summary>
        /// <typeparam name="TResponse">Ответ.</typeparam>
        /// <param name="serializeFunct">Вызов функции сериализации..</param>
        /// <param name="deserializeFunct">Вызов функции десериализации.</param>
        /// <returns>Полученный ответ.</returns>
        private TResponse SendData <TResponse>(Func <ProtocolSerializer, string> serializeFunct, Func <string, ProtocolSerializer, TResponse> deserializeFunct)
            where TResponse : MessageBase
        {
            var serializer = new ProtocolSerializer(ProtocolVersion.Version10);

            var rawRequest = serializeFunct(serializer);

            var rawResponse = SendRawXml(rawRequest);

            var info = serializer.GetMessageInfoOrNull(rawResponse);

            if (info == null)
            {
                throw new Exception("Нет ответа от сервера");
            } //if

            if (info.Kind == MessageKind.ErrorResponse)
            {
                var err = serializer.DeserializeErrorResponse(rawResponse);
                throw new ResponseErrorException(err.Description);
            } //if

            if (info.Kind == MessageKind.AuthErrorResponse)
            {
                var err = serializer.DeserializeAuthErrorResponse(rawResponse);
                throw new ResponseErrorException(err.Message);
            } //if

            return(deserializeFunct(rawResponse, serializer));
        }
Ejemplo n.º 2
0
        public void AuthErrorResponseTest()
        {
            var message = new AuthErrorResponse();

            Assert.AreEqual(message.Kind, MessageKind.AuthErrorResponse);

            message.Message = "AuthErrorResponse";

            var serializer = new ProtocolSerializer(ProtocolVersion.Version10);
            var data       = serializer.Serialize(message);

            Assert.IsNotNull(data);
            Assert.AreEqual(serializer.GetMessageInfoOrNull(data).Kind, MessageKind.AuthErrorResponse);

            var savedMessage = serializer.DeserializeAuthErrorResponse(data);

            Assert.IsNotNull(savedMessage);

            Assert.AreEqual(message.Kind, savedMessage.Kind);
            Assert.AreEqual(message.Version, savedMessage.Version);
            Assert.AreEqual(message.Message, savedMessage.Message);
        }