Connection.cs 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Threading.Tasks;
  5. using BO.AppServer.Metadata.Dto;
  6. using BO.AppServer.Metadata.Enums;
  7. using Quadarax.Foundation.Core.Data.Interface;
  8. using Quadarax.Foundation.Core.Data.Interface.Entity.Dto;
  9. using Quadarax.Foundation.Core.Logging;
  10. namespace BO.Connector.Console
  11. {
  12. public class Connection : AbstractConnection
  13. {
  14. #region *** Private fields ***
  15. protected override string ApiName => "Console";
  16. #endregion
  17. #region *** Constructors ***
  18. public Connection(Uri uriApiBase, TimeSpan timeout, ILogHandler log = null, bool isDumpContentEnabled = false) : base(uriApiBase, timeout, log, isDumpContentEnabled)
  19. {
  20. }
  21. #endregion
  22. #region *** CRUD User ***
  23. public async Task<UserRDto> GetUserAsync(IdentificationTypeEnum identificationType, string identificationValue)
  24. {
  25. CheckIsOpen();
  26. var result = await CallRequestAsync<ResultValueDto<UserRDto>>($"{Ticket}/user/{identificationType}/{identificationValue}", RestCallTypeEnum.Get);
  27. return result.Value;
  28. }
  29. public async Task<IEnumerable<UserRDto>> GetUsersAsync(UserScopeEnums scope, PagingDto paging = null)
  30. {
  31. CheckIsOpen();
  32. var result = await CallRequestAsync<ResultsValueDto<UserRDto>>($"{Ticket}/users/{scope}", RestCallTypeEnum.Get,null, GetPagingHeaderAttributes(paging));
  33. return result.Values;
  34. }
  35. public async Task<UserRDto> CreateUserAsync(UserCDto newUser)
  36. {
  37. CheckIsOpen();
  38. var result = await CallRequestAsync<ResultValueDto<UserRDto>>($"{Ticket}/user", RestCallTypeEnum.Post, newUser);
  39. return result.Value;
  40. }
  41. public async Task<UserRDto> UpdateUserAsnc(IdentificationTypeEnum identificationType, string identificationValue, UserUDto updateUser)
  42. {
  43. CheckIsOpen();
  44. var result = await CallRequestAsync<ResultValueDto<UserRDto>>($"{Ticket}/user/{identificationType}/{identificationValue}", RestCallTypeEnum.Put, updateUser);
  45. return result.Value;
  46. }
  47. public async Task<UserRDto> DeleteUserAsync(IdentificationTypeEnum identificationType, string identificationValue)
  48. {
  49. CheckIsOpen();
  50. var result = await CallRequestAsync<ResultValueDto<UserRDto>>($"{Ticket}/user/{identificationType}/{identificationValue}", RestCallTypeEnum.Delete);
  51. return result.Value;
  52. }
  53. #endregion
  54. #region *** Statistics ***
  55. public async Task<IEnumerable<StatisticsDto>> GetStatisticsAsync(StatisticsScopeEnums scope, PagingDto paging = null)
  56. {
  57. CheckIsOpen();
  58. var result = await CallRequestAsync<ResultsValueDto<StatisticsDto>>($"{Ticket}/statistics/{scope}", RestCallTypeEnum.Get,null,GetPagingHeaderAttributes(paging));
  59. return result.Values;
  60. }
  61. public async Task<IEnumerable<AssemblyInfoDto>> GetVersionsAsync()
  62. {
  63. CheckIsOpen();
  64. var result = await CallRequestAsync<ResultsValueDto<AssemblyInfoDto>>($"{Ticket}/versions", RestCallTypeEnum.Get);
  65. return result.Values;
  66. }
  67. #endregion
  68. #region *** CRUD BillingPlan ***
  69. public async Task<BillingPlanRDto> CreateBillingPlanAsync(BillingPlanCDto newBillingPlan)
  70. {
  71. CheckIsOpen();
  72. var result = await CallRequestAsync<ResultValueDto<BillingPlanRDto>>($"{Ticket}/bplan", RestCallTypeEnum.Post,newBillingPlan);
  73. return result.Value;
  74. }
  75. public async Task<BillingPlanRDto> UpdateBillingPlanAsync(BillingPlanUDto updBillingPlan)
  76. {
  77. CheckIsOpen();
  78. var result = await CallRequestAsync<ResultValueDto<BillingPlanRDto>>($"{Ticket}/bplan", RestCallTypeEnum.Put,updBillingPlan);
  79. return result.Value;
  80. }
  81. public async Task<IEnumerable<BillingPlanRDto>> GetBillingPlansAsync(BPlanScopeEnums scope, PagingDto paging = null)
  82. {
  83. CheckIsOpen();
  84. var result = await CallRequestAsync<ResultsValueDto<BillingPlanRDto>>($"{Ticket}/bplans/{scope}", RestCallTypeEnum.Get,null,GetPagingHeaderAttributes(paging));
  85. return result.Values;
  86. }
  87. #endregion
  88. #region *** CRUD MIME Type ***
  89. public async Task<MimeTypeRDto> CreateMimeTypeAsync(MimeTypeCDto newMimeType)
  90. {
  91. CheckIsOpen();
  92. var result = await CallRequestAsync<ResultValueDto<MimeTypeRDto>>($"{Ticket}/mtype", RestCallTypeEnum.Post,newMimeType);
  93. return result.Value;
  94. }
  95. public async Task<MimeTypeRDto> UpdateMimeTypeAsync(MimeTypeUDto updMimeType)
  96. {
  97. CheckIsOpen();
  98. var result = await CallRequestAsync<ResultValueDto<MimeTypeRDto>>($"{Ticket}/mtype", RestCallTypeEnum.Put,updMimeType);
  99. return result.Value;
  100. }
  101. public async Task<IEnumerable<MimeTypeRDto>> GetMimeTypesAsync(MimeTypeScopeEnums scope, PagingDto paging = null)
  102. {
  103. CheckIsOpen();
  104. var result = await CallRequestAsync<ResultsValueDto<MimeTypeRDto>>($"{Ticket}/mtypes/{scope}", RestCallTypeEnum.Get,null,GetPagingHeaderAttributes(paging));
  105. return result.Values;
  106. }
  107. #endregion
  108. #region *** Documents ***
  109. public async Task<IEnumerable<DocumentRDto>> GetDocumentsAsync(DocumentsScopeEnums scope, PagingDto paging = null)
  110. {
  111. CheckIsOpen();
  112. var result = await CallRequestAsync<ResultsValueDto<DocumentRDto>>($"{Ticket}/documents/{scope}", RestCallTypeEnum.Get,null,GetPagingHeaderAttributes(paging));
  113. return result.Values;
  114. }
  115. public async Task<IEnumerable<DocumentRDto>> GetWorkspaceDocumentsAsync(DocumentsScopeEnums scope, string workspaceApiKey,string apiKeyPassword,string userNameContext, PagingDto paging = null)
  116. {
  117. CheckIsOpen();
  118. var header = GetUserContextHeaderAttributes(userNameContext, GetApiPasswordHeaderAttributes(apiKeyPassword,GetPagingHeaderAttributes(paging)));
  119. var result = await CallRequestAsync<ResultsValueDto<DocumentRDto>>($"{Ticket}/workspace/{workspaceApiKey}/documents/{scope}", RestCallTypeEnum.Get,null, header);
  120. return result.Values;
  121. }
  122. public async Task<DocumentRDto> GetWorkspaceDocumentAsync(string workspaceApiKey,string apiKeyPassword,long documentId, string userNameContext)
  123. {
  124. CheckIsOpen();
  125. var header = GetUserContextHeaderAttributes(userNameContext, GetApiPasswordHeaderAttributes(apiKeyPassword));
  126. var result = await CallRequestAsync<ResultValueDto<DocumentRDto>>($"{Ticket}/workspace/{workspaceApiKey}/document/{documentId}", RestCallTypeEnum.Get,null, header);
  127. return result.Value;
  128. }
  129. public async Task<Stream> GetWorkspaceDocumentContentAsync(string workspaceApiKey,string apiKeyPassword,long documentId, long artifactId, string userNameContext)
  130. {
  131. CheckIsOpen();
  132. var header = GetUserContextHeaderAttributes(userNameContext, GetApiPasswordHeaderAttributes(apiKeyPassword));
  133. var result = await CallGetStreamAsync($"{Ticket}/workspace/{workspaceApiKey}/document/{documentId}/artifact/{artifactId}/content", header);
  134. return result;
  135. }
  136. public async Task<DocumentRDto> CreateWorkspaceDocumentAsync(string workspaceApiKey,string apiKeyPassword,DocumentCDto data, string userNameContext)
  137. {
  138. CheckIsOpen();
  139. var header = GetUserContextHeaderAttributes(userNameContext, GetApiPasswordHeaderAttributes(apiKeyPassword));
  140. var result = await CallRequestAsync<ResultValueDto<DocumentRDto>>($"{Ticket}/workspace/{workspaceApiKey}/document", RestCallTypeEnum.Post,data, header);
  141. return result.Value;
  142. }
  143. public async Task<ArtifactRDto> AppendWorkspaceDocumentArtifactAsync(string workspaceApiKey,string apiKeyPassword,long documentId, ArtifactCDto data,Stream contentStream, string userNameContext)
  144. {
  145. CheckIsOpen();
  146. var header = GetUserContextHeaderAttributes(userNameContext, GetApiPasswordHeaderAttributes(apiKeyPassword));
  147. var result = await CallPostStreamMultipartAsync<ResultValueDto<ArtifactRDto>>($"{Ticket}/workspace/{workspaceApiKey}/document/{documentId}/artifact/input", data, contentStream, header);
  148. return result.Value;
  149. }
  150. #endregion
  151. #region *** Workspace ***
  152. public async Task<WorkspaceRDto> CreateWorkspaceAsync(WorkspaceCDto workspace)
  153. {
  154. CheckIsOpen();
  155. var result = await CallRequestAsync<ResultValueDto<WorkspaceRDto>>($"{Ticket}/workspace", RestCallTypeEnum.Post,workspace);
  156. return result.Value;
  157. }
  158. public async Task<IEnumerable<WorkspaceRDto>> GetWorkspacesAsync(WorkspaceScopeEnums scope,string userNameContext, PagingDto paging = null)
  159. {
  160. CheckIsOpen();
  161. var headers = GetUserContextHeaderAttributes(userNameContext, GetPagingHeaderAttributes(paging));
  162. var result = await CallRequestAsync<ResultsValueDto<WorkspaceRDto>>($"{Ticket}/workspaces/{scope}", RestCallTypeEnum.Get,null,headers);
  163. return result.Values;
  164. }
  165. #endregion
  166. }
  167. }