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