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; namespace FastReport.Cloud.FastReport { internal abstract class FRCloudFilesProviderBase : HttpMessages { private readonly string API_BASEPATH; public FRCloudFilesProviderBase(AuthService authService, string API_BASEPATH) : base(authService) { this.API_BASEPATH = API_BASEPATH; } protected string CreateFileURL(string folderId) { var urlBuilder_ = new StringBuilder(); urlBuilder_.Append(API_BASEPATH).Append("/Folder/{id}/File"); urlBuilder_.Replace("{id}", folderId); var url_ = urlBuilder_.ToString(); return url_; } protected string CreateFolderURL(string folderId) { var urlBuilder_ = new StringBuilder(); urlBuilder_.Append(API_BASEPATH).Append("/Folder/{id}/Folder"); urlBuilder_.Replace("{id}", folderId); var url_ = urlBuilder_.ToString(); return url_; } protected string RenameURL(FileVM folderOrFile) { string id = folderOrFile.Id; string url; if (folderOrFile.Type == FileType.File) url = RenameFileURL(id); else url = RenameFolderURL(id); return url; } protected string DeleteURL(FileVM folderOrFile) { string id = folderOrFile.Id; string url; if (folderOrFile.Type == FileType.File) url = DeleteFileURL(id); else url = DeleteFolderURL(id); return url; } protected string GetFoldersAndFilesURL(string folderId, SearchOptions options) { if (folderId == null) throw new ArgumentNullException(nameof(folderId)); if (options == null) options = SearchOptions.Default; var urlBuilder_ = new StringBuilder(64); urlBuilder_.Append(API_BASEPATH).Append("/Folder/{id}/ListFolderAndFiles?"); urlBuilder_.Replace("{id}", Uri.EscapeDataString(folderId)); if (options.Skip != null) { urlBuilder_.Append("skip=").Append(options.Skip.Value).Append('&'); } if (options.Take != null) { urlBuilder_.Append("take=").Append(options.Take.Value).Append('&'); } if (options.OrderBy != null) { urlBuilder_.Append("orderBy=").Append(options.OrderBy.ToString()).Append('&'); } if (options.Desc != null) { urlBuilder_.Append("desc=").Append(options.Desc.Value).Append('&'); } if (!string.IsNullOrEmpty(options.SearchPattern)) { urlBuilder_.Append("searchPattern=").Append(Uri.EscapeDataString(options.SearchPattern)).Append('&'); } //if (useRegex != null) //{ // urlBuilder_.Append("useRegex=").Append(Uri.EscapeDataString(useRegex)).Append('&'); //} urlBuilder_.Length--; return urlBuilder_.ToString(); } protected string GetFileURL(string id) { var urlBuilder_ = new StringBuilder(); urlBuilder_.Append(API_BASEPATH).Append($"/File/").Append(id); var url_ = urlBuilder_.ToString(); return url_; } private string RenameFileURL(string id) { var urlBuilder_ = new StringBuilder(); urlBuilder_.Append(API_BASEPATH).Append("/File/{id}/Rename"); urlBuilder_.Replace("{id}", id); var url_ = urlBuilder_.ToString(); return url_; } private string RenameFolderURL(string id) { var urlBuilder_ = new StringBuilder(); urlBuilder_.Append(API_BASEPATH).Append("/Folder/{id}/Rename"); urlBuilder_.Replace("{id}", id); var url_ = urlBuilder_.ToString(); return url_; } private string DeleteFileURL(string id) { var urlBuilder_ = new StringBuilder(); urlBuilder_.Append(API_BASEPATH).Append("/File/") .Append(id); var url_ = urlBuilder_.ToString(); return url_; } private string DeleteFolderURL(string id) { var urlBuilder_ = new StringBuilder(); urlBuilder_.Append(API_BASEPATH).Append("/Folder/") .Append(id); var url_ = urlBuilder_.ToString(); return url_; } } }