Пример #1
0
        public static Request Parse(XmlReader reader)
        {
            try
            {
                Request request = new Request();

                if (reader.IsStartElement(@"request") == false)
                {
                    throw new MrasException();
                }

                request.RequestId = reader.GetAttribute(@"requestID");
                request.Version   = reader.GetAttribute(@"version");
                request.To        = reader.GetAttribute(@"to");
                request.From      = reader.GetAttribute(@"from");
                request.Route     = Common.ParseRoute(reader.GetAttribute(@"route"));

                request.CredentialsRequests = new List <CredentialsRequest>();

                reader.Read();
                while (CredentialsRequest.CanParse(reader))
                {
                    request.CredentialsRequests.Add(CredentialsRequest.Parse(reader));
                }

                if (request.CredentialsRequests.Count <= 0)
                {
                    throw new MrasException();
                }
                if (request.CredentialsRequests.Count > 100)
                {
                    throw new MrasException(ReasonPhrase.RequestTooLarge);
                }

                return(request);
            }
            catch (XmlException ex)
            {
                throw WrapException(ex);
            }
            catch (InvalidOperationException ex)
            {
                throw WrapException(ex);
            }
            catch (ArgumentException ex)
            {
                throw WrapException(ex);
            }
            catch (Exception)
            {
                throw;
            }
        }