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