PageRenderTime 37ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/dotNet/dotNetWrapper/ServerXml.cs

https://github.com/tamisoft/ocrsdk.com
C# | 135 lines | 116 code | 16 blank | 3 comment | 22 complexity | 7bff7aa67548b6db783d5d92a38323eb MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Xml;
  6. using System.Xml.Linq;
  7. namespace Abbyy.CloudOcrSdk
  8. {
  9. class ServerXml
  10. {
  11. public static TaskId GetTaskId(XDocument xml)
  12. {
  13. string id = xml.Root.Element("task").Attribute("id").Value;
  14. return new TaskId(id);
  15. }
  16. public static Task GetTaskStatus(XDocument xml)
  17. {
  18. return getTaskInfo( xml.Root.Element("task") );
  19. }
  20. private static TaskStatus statusFromString(string status)
  21. {
  22. switch (status.ToLower())
  23. {
  24. case "submitted":
  25. return TaskStatus.Submitted;
  26. case "queued":
  27. return TaskStatus.Queued;
  28. case "inprogress":
  29. return TaskStatus.InProgress;
  30. case "completed":
  31. return TaskStatus.Completed;
  32. case "processingfailed":
  33. return TaskStatus.ProcessingFailed;
  34. case "deleted":
  35. return TaskStatus.Deleted;
  36. case "notenoughcredits":
  37. return TaskStatus.NotEnoughCredits;
  38. default:
  39. return TaskStatus.Unknown;
  40. }
  41. }
  42. public static Task[] GetAllTasks(XDocument xml)
  43. {
  44. List<Task> result = new List<Task>();
  45. XElement xResponse = xml.Root;
  46. foreach (XElement xTask in xResponse.Elements("task"))
  47. {
  48. Task task = getTaskInfo(xTask);
  49. result.Add(task);
  50. }
  51. return result.ToArray();
  52. }
  53. /// <summary>
  54. /// Get task data from xml node "task"
  55. /// </summary>
  56. private static Task getTaskInfo(XElement xTask)
  57. {
  58. TaskId id = new TaskId(xTask.Attribute("id").Value);
  59. TaskStatus status = statusFromString(xTask.Attribute("status").Value);
  60. Task task = new Task();
  61. task.Id = id;
  62. task.Status = status;
  63. XAttribute xRegistrationTime = xTask.Attribute("registrationTime");
  64. if (xRegistrationTime != null)
  65. {
  66. DateTime time;
  67. if (DateTime.TryParse(xRegistrationTime.Value, out time))
  68. task.RegistrationTime = time;
  69. }
  70. XAttribute xStatusChangeTime = xTask.Attribute("statusChangeTime");
  71. if (xStatusChangeTime != null)
  72. {
  73. DateTime time;
  74. if (DateTime.TryParse(xStatusChangeTime.Value, out time))
  75. task.StatusChangeTime = time;
  76. }
  77. XAttribute xPagesCount = xTask.Attribute("filesCount");
  78. if (xPagesCount != null)
  79. {
  80. int pagesCount;
  81. if (Int32.TryParse(xPagesCount.Value, out pagesCount))
  82. task.PagesCount = pagesCount;
  83. }
  84. XAttribute xCredits = xTask.Attribute("credits");
  85. if (xCredits != null)
  86. {
  87. int credits;
  88. if( Int32.TryParse( xCredits.Value, out credits ))
  89. task.Credits = credits;
  90. }
  91. XAttribute xDescription = xTask.Attribute("description");
  92. if (xDescription != null)
  93. task.Description = xDescription.Value;
  94. XAttribute xResultUrl = xTask.Attribute("resultUrl");
  95. if (xResultUrl != null)
  96. {
  97. task.DownloadUrls = new List<string>{xResultUrl.Value};
  98. for (int i = 2; i < 10; i++)
  99. {
  100. XAttribute xResultUrlI = xTask.Attribute("resultUrl" + i);
  101. if (xResultUrlI != null)
  102. {
  103. task.DownloadUrls.Add(xResultUrlI.Value);
  104. }
  105. else
  106. {
  107. break;
  108. }
  109. }
  110. }
  111. XAttribute xError = xTask.Attribute("error");
  112. if (xError != null)
  113. {
  114. task.Error = xError.Value;
  115. }
  116. return task;
  117. }
  118. }
  119. }