Connector.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.IO.Abstractions;
  5. using System.Net;
  6. using System.Threading.Tasks;
  7. using BO.AppServer.Metadata.Dto;
  8. using BO.AppServer.Metadata.Enums;
  9. using BO.ProcessServer.Business.Enums;
  10. using BO.ProcessServer.Options;
  11. using Connector.PS;
  12. using Quadarax.Foundation.Core.Object;
  13. namespace BO.ProcessServer.Business
  14. {
  15. internal class Connector : DisposableObject, IConnectionPS
  16. {
  17. #region *** Private fields ***
  18. private IConnectionPS _connection;
  19. #endregion
  20. #region *** Properties ***
  21. public bool IsOpen => _connection?.IsOpen ?? false;
  22. #endregion
  23. #region *** Constructor ***
  24. public Connector(Configuration configuration, IFileSystem fileSystem)
  25. {
  26. if (configuration.System.Mode == AppModeEnum.Proxy || configuration.System.Mode == AppModeEnum.ProxyApp)
  27. _connection = new ConnectionProxy(configuration, fileSystem);
  28. else
  29. _connection = new Connection(configuration.ApiBaseUrl, configuration.ApiTimeout,
  30. configuration.System.Identification, IPAddress.Parse(configuration.System.PreferredInterface),
  31. configuration.System.PoolPullDocuments);
  32. }
  33. #endregion
  34. #region *** Public Operations ***
  35. public async Task<IEnumerable<DocumentRDto>> GetDocumentsAsync(DocumentsScopeEnums scope)
  36. {
  37. return await _connection?.GetDocumentsAsync(scope)!;
  38. }
  39. public async Task<DocumentStatusEnum> GetDocumentStateAsync(long documentId)
  40. {
  41. return await _connection?.GetDocumentStateAsync(documentId)!;
  42. }
  43. public async Task<DocumentRDto> GetDocumentInfoAsync(long documentId)
  44. {
  45. return await _connection?.GetDocumentInfoAsync(documentId)!;
  46. }
  47. public async Task<DocumentStatusEnum> SetDocumentStateAsync(long documentId, DocumentStatusEnum status)
  48. {
  49. return await _connection?.SetDocumentStateAsync(documentId, status)!;
  50. }
  51. public async Task<Stream> GetDocumentContentAsync(long documentId, long artifactId)
  52. {
  53. return await _connection?.GetDocumentContentAsync(documentId, artifactId)!;
  54. }
  55. public async Task<ArtifactRDto> SetDocumentContentAsync(long documentId, string fileName, string mimeType, bool overwriteIfExists,
  56. Stream contentStream)
  57. {
  58. return await _connection?.SetDocumentContentAsync(documentId, fileName, mimeType, overwriteIfExists, contentStream)!;
  59. }
  60. public void Open(string userName, string userPassword, string magicKey)
  61. {
  62. _connection?.Open(userName, userPassword, magicKey);
  63. }
  64. public void Close()
  65. {
  66. _connection?.Close();
  67. }
  68. public bool Ping(out TimeSpan duration, out string status)
  69. {
  70. return _connection.Ping(out duration,out status);
  71. }
  72. #endregion
  73. #region *** Private Operations & Overrides ***
  74. protected override void OnDisposing()
  75. {
  76. _connection?.Dispose();
  77. _connection = null;
  78. }
  79. #endregion
  80. }
  81. }