FRCloudReportsProvider.cs 5.1 KB

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