FRCloudTemplatesProvider.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. using System;
  2. using System.Linq;
  3. using System.Globalization;
  4. using System.Net;
  5. using System.IO;
  6. using System.Text;
  7. using System.Threading;
  8. using System.Threading.Tasks;
  9. using FastReport.Auth;
  10. using FastReport.Cloud.FastReport.Models;
  11. namespace FastReport.Cloud.FastReport
  12. {
  13. internal class FRCloudTemplatesProvider : FRCloudFilesProviderBase, IFRCloudFilesProvider
  14. {
  15. const string API_TEMPLATES_BASEPATH = "api/rp/v1/Templates";
  16. public FRCloudTemplatesProvider(AuthService authService)
  17. : base(authService, API_TEMPLATES_BASEPATH)
  18. {
  19. }
  20. public FileVM Create(string folderId, FileCreateVM fileCreate)
  21. {
  22. var url = CreateFileURL(folderId);
  23. var request = GetHttpWebRequestContent(url, fileCreate);
  24. var result = Send<FileVM>(request);
  25. return result;
  26. }
  27. #if ASYNC
  28. public async Task<FileVM> CreateAsync(string folderId, FileCreateVM fileCreate)
  29. {
  30. var url = CreateFileURL(folderId);
  31. var request = await GetHttpWebRequestContentAsync(url, fileCreate);
  32. var result = await SendAsync<FileVM>(request);
  33. return result;
  34. }
  35. #endif
  36. public FileVM CreateFolder(string folderId, FolderCreateVM folderCreate)
  37. {
  38. var url = CreateFolderURL(folderId);
  39. var request = GetHttpWebRequestContent(url, folderCreate);
  40. var result = Send<FileVM>(request);
  41. return result;
  42. }
  43. #if ASYNC
  44. public async Task<FileVM> CreateFolderAsync(string folderId, FolderCreateVM folderCreate)
  45. {
  46. var url = CreateFolderURL(folderId);
  47. var request = await GetHttpWebRequestContentAsync(url, folderCreate);
  48. var result = await SendAsync<FileVM>(request);
  49. return result;
  50. }
  51. #endif
  52. public void Delete(FileVM folderOrFile)
  53. {
  54. string url = DeleteURL(folderOrFile);
  55. var request = GetHttpWebRequest(url,
  56. method: HttpMethod.Delete);
  57. Send(request);
  58. }
  59. #if ASYNC
  60. public async Task DeleteAsync(FileVM folderOrFile)
  61. {
  62. string url = DeleteURL(folderOrFile);
  63. var request = GetHttpWebRequest(url,
  64. method: HttpMethod.Delete);
  65. await SendAsync(request);
  66. }
  67. #endif
  68. public FileResponse Download(string id)
  69. {
  70. string url = "download/t/" + id;
  71. var request = GetHttpWebRequest(url,
  72. accept: "text/plain");
  73. var result = DownloadFile(request);
  74. return result;
  75. }
  76. #if ASYNC
  77. public async Task<FileResponse> DownloadAsync(string id)
  78. {
  79. string url = "download/t/" + id;
  80. var request = GetHttpWebRequest(url,
  81. accept: "text/plain");
  82. var result = await DownloadFileAsync(request);
  83. return result;
  84. }
  85. #endif
  86. public FilesVM GetFoldersAndFiles(string folderId, SearchOptions options = null)
  87. {
  88. var url = GetFoldersAndFilesURL(folderId, options);
  89. var request = GetHttpWebRequest(url);
  90. var result = Send<FilesVM>(request);
  91. return result;
  92. }
  93. #if ASYNC
  94. public async Task<FilesVM> GetFoldersAndFilesAsync(string folderId, SearchOptions options = null)
  95. {
  96. var url = GetFoldersAndFilesURL(folderId, options);
  97. var request = GetHttpWebRequest(url);
  98. var result = await SendAsync<FilesVM>(request);
  99. return result;
  100. }
  101. #endif
  102. public FileVM Rename(FileVM folderOrFile, RenameVM newName)
  103. {
  104. string url = RenameURL(folderOrFile);
  105. var request = GetHttpWebRequestContent(url, newName,
  106. method: HttpMethod.Put);
  107. var result = Send<FileVM>(request);
  108. return result;
  109. }
  110. #if ASYNC
  111. public async Task<FileVM> RenameAsync(FileVM folderOrFile, RenameVM newName)
  112. {
  113. string url = RenameURL(folderOrFile);
  114. var request = await GetHttpWebRequestContentAsync(url, newName,
  115. method: HttpMethod.Put);
  116. var result = await SendAsync<FileVM>(request);
  117. return result;
  118. }
  119. #endif
  120. private static string ResaveURL(string id)
  121. {
  122. var urlBuilder_ = new StringBuilder();
  123. urlBuilder_.Append(API_TEMPLATES_BASEPATH).Append("/File/{id}/Content");
  124. urlBuilder_.Replace("{id}", id);
  125. var url_ = urlBuilder_.ToString();
  126. return url_;
  127. }
  128. public void Resave(string id, FileCreateVM updatedFile)
  129. {
  130. string url = ResaveURL(id);
  131. var request = GetHttpWebRequestContent(url, updatedFile,
  132. method: HttpMethod.Put);
  133. Send(request);
  134. }
  135. #if ASYNC
  136. public async Task ResaveAsync(string id, FileCreateVM updatedFile)
  137. {
  138. string url = ResaveURL(id);
  139. var request = await GetHttpWebRequestContentAsync(url, updatedFile,
  140. method: HttpMethod.Put);
  141. await SendAsync(request);
  142. }
  143. #endif
  144. public FileVM GetFile(string id)
  145. {
  146. string url = GetFileURL(id);
  147. var request = GetHttpWebRequest(url);
  148. var result = Send<FileVM>(request);
  149. return result;
  150. }
  151. #if ASYNC
  152. public async Task<FileVM> GetFileAsync(string id)
  153. {
  154. string url = GetFileURL(id);
  155. var request = GetHttpWebRequest(url);
  156. var result = await SendAsync<FileVM>(request);
  157. return result;
  158. }
  159. #endif
  160. }
  161. }