/// <summary>
 /// Deserializes a jobDetails creation result object from a payload string.
 /// </summary>
 /// <param name="payload">
 /// The payload.
 /// </param>
 /// <returns>
 /// A JobCreationResults object representing the payload.
 /// </returns>
 public JobCreationResults DeserializeJobCreationResults(string payload)
 {
     JobCreationResults results = new JobCreationResults();
     results.ErrorCode = string.Empty;
     results.HttpStatusCode = HttpStatusCode.Accepted;
     XmlDocumentConverter documentConverter = new XmlDocumentConverter();
     var document = documentConverter.GetXmlDocument(payload);
     DynaXmlNamespaceTable nameTable = new DynaXmlNamespaceTable(document);
     var node = document.SelectSingleNode("//def:PassthroughResponse/def:Data", nameTable.NamespaceManager);
     results.JobId = node.InnerText;
     XmlElement error = (XmlElement)document.SelectSingleNode("//def:PassthroughResponse/def:Error", nameTable.NamespaceManager);
     if (error.IsNotNull())
     {
         var errorId = error.SelectSingleNode("//def:ErrorId", nameTable.NamespaceManager);
         if (errorId.IsNotNull())
         {
             results.ErrorCode = errorId.InnerText;
         }
         var statusCode = error.SelectSingleNode("//def:StatusCode", nameTable.NamespaceManager);
         if (statusCode.IsNotNull())
         {
             HttpStatusCode httpStatusCode = HttpStatusCode.Accepted;
             if (HttpStatusCode.TryParse(statusCode.InnerText, out httpStatusCode))
             {
                 results.HttpStatusCode = httpStatusCode;
             }
         }
     }
     return results;
 }
        /// <summary>
        /// Deserializes a jobDetails creation result object from a payload string.
        /// </summary>
        /// <param name="payload">
        /// The payload.
        /// </param>
        /// <returns>
        /// A JobCreationResults object representing the payload.
        /// </returns>
        public JobCreationResults DeserializeJobCreationResults(string payload)
        {
            JobCreationResults results = new JobCreationResults();

            results.ErrorCode      = string.Empty;
            results.HttpStatusCode = HttpStatusCode.Accepted;
            XmlDocumentConverter documentConverter = new XmlDocumentConverter();
            var document = documentConverter.GetXmlDocument(payload);
            DynaXmlNamespaceTable nameTable = new DynaXmlNamespaceTable(document);
            var node = document.SelectSingleNode("//def:PassthroughResponse/def:Data", nameTable.NamespaceManager);

            results.JobId = node.InnerText;
            XmlElement error = (XmlElement)document.SelectSingleNode("//def:PassthroughResponse/def:Error", nameTable.NamespaceManager);

            if (error.IsNotNull())
            {
                var errorId = error.SelectSingleNode("//def:ErrorId", nameTable.NamespaceManager);
                if (errorId.IsNotNull())
                {
                    results.ErrorCode = errorId.InnerText;
                }
                var statusCode = error.SelectSingleNode("//def:StatusCode", nameTable.NamespaceManager);
                if (statusCode.IsNotNull())
                {
                    HttpStatusCode httpStatusCode = HttpStatusCode.Accepted;
                    if (HttpStatusCode.TryParse(statusCode.InnerText, out httpStatusCode))
                    {
                        results.HttpStatusCode = httpStatusCode;
                    }
                }
            }
            return(results);
        }
Beispiel #3
0
        /// <summary>
        /// Deserializes a Connectivity Response.
        /// </summary>
        /// <param name="payload">The payload.</param>
        /// <returns>
        /// A PayloadResponse object with the operation id for the data.
        /// </returns>
        public PayloadResponse <Guid> DeserializeConnectivityResponse(string payload)
        {
            XmlDocument doc = new XmlDocument();

            using (var stream = payload.ToUtf8Stream())
                using (var reader = XmlReader.Create(stream))
                {
                    doc.Load(reader);
                }
            var manager = new DynaXmlNamespaceTable(doc);
            PayloadResponse <Guid> result = new PayloadResponse <Guid>();
            var node = doc.SelectSingleNode("/def:PassthroughResponse/def:Data", manager.NamespaceManager);

            if (node.IsNotNull() && node.InnerText.IsNotNullOrEmpty())
            {
                var  text = node.InnerText;
                Guid guid;
                if (!Guid.TryParse(text, out guid))
                {
                    throw new SerializationException("Unable to deserialize the server response.");
                }
                result.Data = guid;
            }
            node = doc.SelectSingleNode("/def:PassthroughResponse/def:Error", manager.NamespaceManager);
            result.ErrorDetails = this.GetErrorDetails(node, manager.NamespaceManager);
            return(result);
        }
Beispiel #4
0
        /// <inheritdoc />
        public PayloadResponse <UserChangeRequestStatus> DeserializeConnectivityStatus(string payload)
        {
            XmlDocument doc = new XmlDocument();

            using (var stream = payload.ToUtf8Stream())
                using (var reader = XmlReader.Create(stream))
                {
                    doc.Load(reader);
                }
            var manager = new DynaXmlNamespaceTable(doc);
            PayloadResponse <UserChangeRequestStatus> result = new PayloadResponse <UserChangeRequestStatus>();
            var node = doc.SelectSingleNode("/def:PassthroughResponse/def:Data", manager.NamespaceManager);

            if (node.IsNotNull())
            {
                result.Data = new UserChangeRequestStatus();
                var data = node;
                node = data.SelectSingleNode("def:State", manager.NamespaceManager);
                UserChangeRequestOperationStatus status;
                if (node.IsNull() || !UserChangeRequestOperationStatus.TryParse(node.InnerText, out status))
                {
                    throw new SerializationException("Unable to deserialize the server response.");
                }
                result.Data.State = status;

                node = data.SelectSingleNode("def:UserType", manager.NamespaceManager);
                UserChangeRequestUserType userType;
                if (node.IsNull() || !UserChangeRequestUserType.TryParse(node.InnerText, out userType))
                {
                    throw new SerializationException("Unable to deserialize the server response.");
                }
                result.Data.UserType = userType;

                node = data.SelectSingleNode("def:OperationType", manager.NamespaceManager);
                UserChangeRequestOperationType operationType;
                if (node.IsNull() || !UserChangeRequestOperationType.TryParse(node.InnerText, out operationType))
                {
                    throw new SerializationException("Unable to deserialize the server response.");
                }
                result.Data.OperationType = operationType;

                node = data.SelectSingleNode("def:RequestIssueDate", manager.NamespaceManager);
                DateTime requestTime;
                if (node.IsNull() || !DateTime.TryParse(node.InnerText, out requestTime))
                {
                    throw new SerializationException("Unable to deserialize the server response.");
                }
                result.Data.RequestIssueDate = requestTime.ToUniversalTime();

                node = data.SelectSingleNode("def:Error", manager.NamespaceManager);
                result.Data.ErrorDetails = this.GetErrorDetails(node, manager.NamespaceManager);
            }
            node = doc.SelectSingleNode("/def:PassthroughResponse/def:Error", manager.NamespaceManager);
            result.ErrorDetails = this.GetErrorDetails(node, manager.NamespaceManager);

            return(result);
        }
        /// <summary>
        /// Deserailzies a payload into a JobList.
        /// </summary>
        /// <param name="payload">
        /// The payload.
        /// </param>
        /// <returns>
        /// An JobList representing the payload.
        /// </returns>
        public JobList DeserializeJobList(string payload)
        {
            var     jobs    = new List <JobDetails>();
            JobList results = new JobList();
            XmlDocumentConverter documentConverter = new XmlDocumentConverter();
            var document = documentConverter.GetXmlDocument(payload);
            DynaXmlNamespaceTable nameTable = new DynaXmlNamespaceTable(document);
            var prefix = nameTable.GetPrefixesForNamespace("http://schemas.microsoft.com/2003/10/Serialization/Arrays").SingleOrDefault();

            if (prefix.IsNotNull())
            {
                var query = string.Format(CultureInfo.InvariantCulture, "//def:PassthroughResponse/def:Data/{0}:string", prefix);
                var nodes = document.SelectNodes(query, nameTable.NamespaceManager);
                foreach (XmlNode node in nodes)
                {
                    jobs.Add(new JobDetails()
                    {
                        JobId = node.InnerText
                    });
                }
            }
            results.ErrorCode      = string.Empty;
            results.HttpStatusCode = HttpStatusCode.Accepted;
            XmlElement error = (XmlElement)document.SelectSingleNode("//def:PassthroughResponse/def:Error", nameTable.NamespaceManager);

            if (error.IsNotNull())
            {
                var errorId = error.SelectSingleNode("//def:ErrorId", nameTable.NamespaceManager);
                if (errorId.IsNotNull())
                {
                    results.ErrorCode = errorId.InnerText;
                }
                var statusCode = error.SelectSingleNode("//def:StatusCode", nameTable.NamespaceManager);
                if (statusCode.IsNotNull())
                {
                    HttpStatusCode httpStatusCode = HttpStatusCode.Accepted;
                    if (HttpStatusCode.TryParse(statusCode.InnerText, out httpStatusCode))
                    {
                        results.HttpStatusCode = httpStatusCode;
                    }
                }
            }
            results.Jobs.AddRange(jobs);
            return(results);
        }
 /// <summary>
 /// Deserializes a Connectivity Response.
 /// </summary>
 /// <param name="payload">The payload.</param>
 /// <returns>
 /// A PayloadResponse object with the operation id for the data.
 /// </returns>
 public PayloadResponse<Guid> DeserializeConnectivityResponse(string payload)
 {
     XmlDocument doc = new XmlDocument();
     using (var stream = payload.ToUtf8Stream())
     using (var reader = XmlReader.Create(stream))
     {
         doc.Load(reader);
     }
     var manager = new DynaXmlNamespaceTable(doc);
     PayloadResponse<Guid> result = new PayloadResponse<Guid>();
     var node = doc.SelectSingleNode("/def:PassthroughResponse/def:Data", manager.NamespaceManager);
     if (node.IsNotNull() && node.InnerText.IsNotNullOrEmpty())
     {
         var text = node.InnerText;
         Guid guid;
         if (!Guid.TryParse(text, out guid))
         {
             throw new SerializationException("Unable to deserialize the server response.");
         }
         result.Data = guid;
     }
     node = doc.SelectSingleNode("/def:PassthroughResponse/def:Error", manager.NamespaceManager);
     result.ErrorDetails = this.GetErrorDetails(node, manager.NamespaceManager);
     return result;
 }
        /// <inheritdoc />
        public PayloadResponse<UserChangeRequestStatus> DeserializeConnectivityStatus(string payload)
        {
            XmlDocument doc = new XmlDocument();
            using (var stream = payload.ToUtf8Stream())
            using (var reader = XmlReader.Create(stream))
            {
                doc.Load(reader);
            }
            var manager = new DynaXmlNamespaceTable(doc);
            PayloadResponse<UserChangeRequestStatus> result = new PayloadResponse<UserChangeRequestStatus>();
            var node = doc.SelectSingleNode("/def:PassthroughResponse/def:Data", manager.NamespaceManager);
            if (node.IsNotNull())
            {
                result.Data = new UserChangeRequestStatus();
                var data = node;
                node = data.SelectSingleNode("def:State", manager.NamespaceManager);
                UserChangeRequestOperationStatus status;
                if (node.IsNull() || !UserChangeRequestOperationStatus.TryParse(node.InnerText, out status))
                {
                    throw new SerializationException("Unable to deserialize the server response.");
                }
                result.Data.State = status;

                node = data.SelectSingleNode("def:UserType", manager.NamespaceManager);
                UserChangeRequestUserType userType;
                if (node.IsNull() || !UserChangeRequestUserType.TryParse(node.InnerText, out userType))
                {
                    throw new SerializationException("Unable to deserialize the server response.");
                }
                result.Data.UserType = userType;

                node = data.SelectSingleNode("def:OperationType", manager.NamespaceManager);
                UserChangeRequestOperationType operationType;
                if (node.IsNull() || !UserChangeRequestOperationType.TryParse(node.InnerText, out operationType))
                {
                    throw new SerializationException("Unable to deserialize the server response.");
                }
                result.Data.OperationType = operationType;

                node = data.SelectSingleNode("def:RequestIssueDate", manager.NamespaceManager);
                DateTime requestTime;
                if (node.IsNull() || !DateTime.TryParse(node.InnerText, out requestTime))
                {
                    throw new SerializationException("Unable to deserialize the server response.");
                }
                result.Data.RequestIssueDate = requestTime.ToUniversalTime();

                node = data.SelectSingleNode("def:Error", manager.NamespaceManager);
                result.Data.ErrorDetails = this.GetErrorDetails(node, manager.NamespaceManager);

            }
            node = doc.SelectSingleNode("/def:PassthroughResponse/def:Error", manager.NamespaceManager);
            result.ErrorDetails = this.GetErrorDetails(node, manager.NamespaceManager);

            return result;
        }
        /// <summary>
        /// Desterilizes the jobDetails details payload data.
        /// </summary>
        /// <param name="payload">
        /// The payload data returned from a server.
        /// </param>
        /// <param name="jobId">
        /// The jobId for the jobDetails requested.
        /// </param>
        /// <returns>
        /// A new JobDetails object representing the jobDetails.
        /// </returns>
        public JobDetails DeserializeJobDetails(string payload, string jobId)
        {
            JobDetails           retval            = new JobDetails();
            XmlDocumentConverter documentConverter = new XmlDocumentConverter();
            var document = documentConverter.GetXmlDocument(payload);
            DynaXmlNamespaceTable nameTable = new DynaXmlNamespaceTable(document);
            var query = "//def:PassthroughResponse/def:Data";
            var node  = document.SelectSingleNode(query, nameTable.NamespaceManager);

            if (node.IsNotNull())
            {
                foreach (XmlNode child in node.ChildNodes)
                {
                    XmlElement element = child as XmlElement;
                    if (element.IsNotNull())
                    {
                        switch (element.LocalName)
                        {
                        case "ErrorOutputPath":
                            retval.ErrorOutputPath = element.InnerText;
                            break;

                        case "ExitCode":
                            var errorCode = element.InnerText;
                            if (errorCode.IsNotNullOrEmpty())
                            {
                                int outCode;
                                if (int.TryParse(errorCode, NumberStyles.Integer, CultureInfo.InvariantCulture, out outCode))
                                {
                                    retval.ExitCode = outCode;
                                }
                            }
                            break;

                        case "LogicalOutputPath":
                            retval.LogicalOutputPath = element.InnerText;
                            break;

                        case "Name":
                            retval.Name = element.InnerText;
                            break;

                        case "PhysicalOutputPath":
                            retval.PhysicalOutputPath = element.InnerText;
                            break;

                        case "Query":
                            retval.Query = element.InnerText;
                            break;

                        case "StatusCode":
                            var statusCode = JobStatusCode.Unknown;
                            Assert.IsTrue(Enum.TryParse(element.InnerText, true, out statusCode));
                            retval.StatusCode = statusCode;
                            break;

                        case "SubmissionTime":
                            var submissionTime = element.InnerText;
                            if (submissionTime.IsNotNullOrEmpty())
                            {
                                long timeInTicks;
                                if (long.TryParse(submissionTime, NumberStyles.Integer, CultureInfo.InvariantCulture, out timeInTicks))
                                {
                                    retval.SubmissionTime = new DateTime(timeInTicks);
                                }
                            }
                            break;
                        }
                    }
                }
            }
            retval.ErrorCode      = string.Empty;
            retval.HttpStatusCode = HttpStatusCode.Accepted;
            XmlElement error = (XmlElement)document.SelectSingleNode("//def:PassthroughResponse/def:Error", nameTable.NamespaceManager);

            if (error.IsNotNull())
            {
                var errorId = error.SelectSingleNode("//def:ErrorId", nameTable.NamespaceManager);
                if (errorId.IsNotNull())
                {
                    retval.ErrorCode = errorId.InnerText;
                }
                var statusCode = error.SelectSingleNode("//def:StatusCode", nameTable.NamespaceManager);
                if (statusCode.IsNotNull())
                {
                    HttpStatusCode httpStatusCode = HttpStatusCode.Accepted;
                    if (HttpStatusCode.TryParse(statusCode.InnerText, out httpStatusCode))
                    {
                        retval.HttpStatusCode = httpStatusCode;
                    }
                }
            }
            retval.JobId = jobId;
            return(retval);
        }
 public void WhenIGenerateTheNamespaceTable()
 {
     this.namespaceTable = new DynaXmlNamespaceTable(this.document);
 }
 /// <summary>
 /// Deserailzies a payload into a JobList.
 /// </summary>
 /// <param name="payload">
 /// The payload.
 /// </param>
 /// <returns>
 /// An JobList representing the payload.
 /// </returns>
 public JobList DeserializeJobList(string payload)
 {
     var jobs = new List<JobDetails>();
     JobList results = new JobList();
     XmlDocumentConverter documentConverter = new XmlDocumentConverter();
     var document = documentConverter.GetXmlDocument(payload);
     DynaXmlNamespaceTable nameTable = new DynaXmlNamespaceTable(document);
     var prefix = nameTable.GetPrefixesForNamespace("http://schemas.microsoft.com/2003/10/Serialization/Arrays").SingleOrDefault();
     if (prefix.IsNotNull())
     {
         var query = string.Format(CultureInfo.InvariantCulture, "//def:PassthroughResponse/def:Data/{0}:string", prefix);
         var nodes = document.SelectNodes(query, nameTable.NamespaceManager);
         foreach (XmlNode node in nodes)
         {
             jobs.Add(new JobDetails() { JobId = node.InnerText });
         }
     }
     results.ErrorCode = string.Empty;
     results.HttpStatusCode = HttpStatusCode.Accepted;
     XmlElement error = (XmlElement)document.SelectSingleNode("//def:PassthroughResponse/def:Error", nameTable.NamespaceManager);
     if (error.IsNotNull())
     {
         var errorId = error.SelectSingleNode("//def:ErrorId", nameTable.NamespaceManager);
         if (errorId.IsNotNull())
         {
             results.ErrorCode = errorId.InnerText;
         }
         var statusCode = error.SelectSingleNode("//def:StatusCode", nameTable.NamespaceManager);
         if (statusCode.IsNotNull())
         {
             HttpStatusCode httpStatusCode = HttpStatusCode.Accepted;
             if (HttpStatusCode.TryParse(statusCode.InnerText, out httpStatusCode))
             {
                 results.HttpStatusCode = httpStatusCode;
             }
         }
     }
     results.Jobs.AddRange(jobs);
     return results;
 }
 /// <summary>
 /// Desterilizes the jobDetails details payload data.
 /// </summary>
 /// <param name="payload">
 /// The payload data returned from a server.
 /// </param>
 /// <param name="jobId">
 /// The jobId for the jobDetails requested.
 /// </param>
 /// <returns>
 /// A new JobDetails object representing the jobDetails.
 /// </returns>
 public JobDetails DeserializeJobDetails(string payload, string jobId)
 {
     JobDetails retval = new JobDetails();
     XmlDocumentConverter documentConverter = new XmlDocumentConverter();
     var document = documentConverter.GetXmlDocument(payload);
     DynaXmlNamespaceTable nameTable = new DynaXmlNamespaceTable(document);
     var query = "//def:PassthroughResponse/def:Data";
     var node = document.SelectSingleNode(query, nameTable.NamespaceManager);
     if (node.IsNotNull())
     {
         foreach (XmlNode child in node.ChildNodes)
         {
             XmlElement element = child as XmlElement;
             if (element.IsNotNull())
             {
                 switch (element.LocalName)
                 {
                     case "ErrorOutputPath":
                         retval.ErrorOutputPath = element.InnerText;
                         break;
                     case "ExitCode":
                         var errorCode = element.InnerText;
                         if (errorCode.IsNotNullOrEmpty())
                         {
                             int outCode;
                             if (int.TryParse(errorCode, NumberStyles.Integer, CultureInfo.InvariantCulture, out outCode))
                             {
                                 retval.ExitCode = outCode;
                             }
                         }
                         break;
                     case "LogicalOutputPath":
                         retval.LogicalOutputPath = element.InnerText;
                         break;
                     case "Name":
                         retval.Name = element.InnerText;
                         break;
                     case "PhysicalOutputPath":
                         retval.PhysicalOutputPath = element.InnerText;
                         break;
                     case "Query":
                         retval.Query = element.InnerText;
                         break;
                     case "StatusCode":
                         JobStatusCode statusCode;
                         retval.StatusCode = Enum.TryParse(element.InnerText, true, out statusCode) ? statusCode : JobStatusCode.Unknown;
                         break;
                     case "SubmissionTime":
                         var submissionTime = element.InnerText;
                         if (submissionTime.IsNotNullOrEmpty())
                         {
                             long timeInTicks;
                             if (long.TryParse(submissionTime, NumberStyles.Integer, CultureInfo.InvariantCulture, out timeInTicks))
                             {
                                 retval.SubmissionTime = new DateTime(timeInTicks);
                             }
                         }
                         break;
                 }
             }
         }
     }
     retval.ErrorCode = string.Empty;
     retval.HttpStatusCode = HttpStatusCode.Accepted;
     XmlElement error = (XmlElement)document.SelectSingleNode("//def:PassthroughResponse/def:Error", nameTable.NamespaceManager);
     if (error.IsNotNull())
     {
         var errorId = error.SelectSingleNode("//def:ErrorId", nameTable.NamespaceManager);
         if (errorId.IsNotNull())
         {
             retval.ErrorCode = errorId.InnerText;
         }
         var statusCode = error.SelectSingleNode("//def:StatusCode", nameTable.NamespaceManager);
         if (statusCode.IsNotNull())
         {
             HttpStatusCode httpStatusCode = HttpStatusCode.Accepted;
             if (HttpStatusCode.TryParse(statusCode.InnerText, out httpStatusCode))
             {
                 retval.HttpStatusCode = httpStatusCode;
             }
         }
     }
     retval.JobId = jobId;
     return retval;
 }
Beispiel #12
0
 public void WhenIGenerateTheNamespaceTable()
 {
     this.namespaceTable = new DynaXmlNamespaceTable(this.document);
 }