123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
-
- using System;
- using System.Linq;
- using System.Globalization;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using FastReport.Auth;
- using FastReport.Cloud.FastReport.Models;
- using System.Net;
- using System.IO;
- namespace FastReport.Cloud.FastReport
- {
- internal sealed class FRCloudReportsProvider : FRCloudFilesProviderBase, IFRCloudFilesProvider
- {
- const string API_REPORTS_BASEPATH = "api/rp/v1/Reports";
- public FRCloudReportsProvider(AuthService authService)
- : base(authService, API_REPORTS_BASEPATH)
- {
- }
- public FileVM Create(string folderId, FileCreateVM fileCreate)
- {
- var url = CreateFileURL(folderId);
- var request = GetHttpWebRequestContent(url, fileCreate);
- var result = Send<FileVM>(request);
- return result;
- }
- #if ASYNC
- public async Task<FileVM> CreateAsync(string folderId, FileCreateVM fileCreate)
- {
- var url = CreateFileURL(folderId);
- var request = await GetHttpWebRequestContentAsync(url, fileCreate);
- var result = await SendAsync<FileVM>(request);
- return result;
- }
- #endif
- public FileVM CreateFolder(string folderId, FolderCreateVM folderCreate)
- {
- var url = CreateFolderURL(folderId);
- var request = GetHttpWebRequestContent(url, folderCreate);
- var result = Send<FileVM>(request);
- return result;
- }
- #if ASYNC
- public async Task<FileVM> CreateFolderAsync(string folderId, FolderCreateVM folderCreate)
- {
- var url = CreateFolderURL(folderId);
- var request = await GetHttpWebRequestContentAsync(url, folderCreate);
- var result = await SendAsync<FileVM>(request);
- return result;
- }
- #endif
- public void Delete(FileVM folderOrFile)
- {
- string url = DeleteURL(folderOrFile);
- var request = GetHttpWebRequest(url,
- method: HttpMethod.Delete);
- Send(request);
- }
- #if ASYNC
- public async Task DeleteAsync(FileVM folderOrFile)
- {
- string url = DeleteURL(folderOrFile);
- var request = GetHttpWebRequest(url,
- method: HttpMethod.Delete);
- await SendAsync(request);
- }
- #endif
- public FileResponse Download(string id)
- {
- var urlBuilder_ = new StringBuilder();
- urlBuilder_.Append("download/r/").Append(id);
- var url_ = urlBuilder_.ToString();
- var request = GetHttpWebRequest(url_,
- accept: "text/plain");
- var result = DownloadFile(request);
- return result;
- }
- #if ASYNC
- public async Task<FileResponse> DownloadAsync(string id)
- {
- var urlBuilder_ = new StringBuilder();
- urlBuilder_.Append("download/r/").Append(id);
- var url_ = urlBuilder_.ToString();
- var request = GetHttpWebRequest(url_,
- accept: "text/plain");
- var result = await DownloadFileAsync(request);
- return result;
- }
- #endif
- public FilesVM GetFoldersAndFiles(string folderId, SearchOptions options = null)
- {
- var url = GetFoldersAndFilesURL(folderId, options);
- var request = GetHttpWebRequest(url);
- var result = Send<FilesVM>(request);
- return result;
- }
- #if ASYNC
- public async Task<FilesVM> GetFoldersAndFilesAsync(string folderId, SearchOptions options = null)
- {
- var url = GetFoldersAndFilesURL(folderId, options);
- var request = GetHttpWebRequest(url);
- var result = await SendAsync<FilesVM>(request);
- return result;
- }
- #endif
- public FileVM Rename(FileVM folderOrFile, RenameVM newName)
- {
- string url = RenameURL(folderOrFile);
- var request = GetHttpWebRequestContent(url, newName,
- method: HttpMethod.Put);
- var result = Send<FileVM>(request);
- return result;
- }
- #if ASYNC
- public async Task<FileVM> RenameAsync(FileVM folderOrFile, RenameVM newName)
- {
- string url = RenameURL(folderOrFile);
- var request = await GetHttpWebRequestContentAsync(url, newName,
- method: HttpMethod.Put);
- var result = await SendAsync<FileVM>(request);
- return result;
- }
- #endif
- // Resave doesn't work for .fpx
- public void Resave(string id, FileCreateVM updatedFile)
- {
- throw new NotImplementedException();
- }
- #if ASYNC
- public Task ResaveAsync(string id, FileCreateVM updatedFile)
- {
- throw new NotImplementedException();
- }
- #endif
- // not supported for .fpx reports
- FileVM IFRCloudFilesProvider.GetFile(string id)
- {
- throw new NotImplementedException();
- }
- #if ASYNC
- Task<FileVM> IFRCloudFilesProvider.GetFileAsync(string id)
- {
- throw new NotImplementedException();
- }
- #endif
- }
- }
|