123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- using FastReport.Auth;
- using FastReport.Cloud.FastReport.Models;
- using FastReport.Cloud.FastReport.Models.DataSource;
- using System.Text;
- using System.Threading.Tasks;
- namespace FastReport.Cloud.FastReport
- {
- internal class FRCloudDataSourcesProvider : HttpMessages, IFRCloudDataSourcesProvider
- {
- const string API_DATA_SOURCE_BASEPATH = "api/data/v1/DataSources";
- public FRCloudDataSourcesProvider(AuthService authService)
- : base(authService)
- {
- }
- public DataSourceVM CreateDataSource(CreateDataSourceVM dataSource)
- {
- var url = CreateDataSourceURL();
- var request = GetHttpWebRequestContent(url, dataSource);
- var result = Send<DataSourceVM>(request);
- return result;
- }
- #if ASYNC
- public async Task<DataSourceVM> CreateDataSourceAsync(CreateDataSourceVM dataSource)
- {
- var url = CreateDataSourceURL();
- var request = await GetHttpWebRequestContentAsync(url, dataSource);
- var result = await SendAsync<DataSourceVM>(request);
- return result;
- }
- #endif
- public DataSourcesVM GetAvailableDataSources(DataSourcesOptions options)
- {
- var url = GetAvailableDataSourcesURL(options);
- var request = GetHttpWebRequest(url);
- var result = Send<DataSourcesVM>(request);
- return result;
- }
- #if ASYNC
- public async Task<DataSourcesVM> GetAvailableDataSourcesAsync(DataSourcesOptions options)
- {
- var url = GetAvailableDataSourcesURL(options);
- var request = GetHttpWebRequest(url);
- var result = await SendAsync<DataSourcesVM>(request);
- return result;
- }
- #endif
- public DataSourceVM GetDataSource(string id)
- {
- var url = GetDataSourceURL(id);
- var request = GetHttpWebRequest(url);
- var result = Send<DataSourceVM>(request);
- return result;
- }
- #if ASYNC
- public async Task<DataSourceVM> GetDataSourceAsync(string id)
- {
- var url = GetDataSourceURL(id);
- var request = GetHttpWebRequest(url);
- var result = await SendAsync<DataSourceVM>(request);
- return result;
- }
- #endif
- public void FetchData(string id)
- {
- var url = GetFetchDataURL(id);
- var request = GetHttpWebRequest(url);
- Send(request);
- }
- #if ASYNC
- public async Task FetchDataAsync(string id)
- {
- var url = GetFetchDataURL(id);
- var request = GetHttpWebRequest(url);
- await SendAsync(request);
- }
- #endif
- public void UpdateSubscriptionDataSource(string id, UpdateDataSourceSubcriptionVM model)
- {
- var url = GetUpdateSubscriptionDataSourceURL(id);
- var request = GetHttpWebRequestContent(url, model, HttpMethod.Put);
- Send(request);
- }
- #if ASYNC
- public async Task UpdateSubscriptionDataSourceAsync(string id, UpdateDataSourceSubcriptionVM model)
- {
- var url = GetUpdateSubscriptionDataSourceURL(id);
- var request = await GetHttpWebRequestContentAsync(url, model, HttpMethod.Put);
- await SendAsync(request);
- }
- #endif
- public void RenameDataSource(string id, RenameDataSourceVM model)
- {
- var url = GetRenameDataSourceURL(id);
- var request = GetHttpWebRequestContent(url, model, HttpMethod.Put);
- Send(request);
- }
- #if ASYNC
- public async Task RenameDataSourceAsync(string id, RenameDataSourceVM model)
- {
- var url = GetRenameDataSourceURL(id);
- var request = await GetHttpWebRequestContentAsync(url, model, HttpMethod.Put);
- await SendAsync(request);
- }
- #endif
- public void UpdateConnectionString(string id, UpdateDataSourceConnectionStringVM model)
- {
- var url = GetUpdateDataSourceConnectionURL(id);
- var request = GetHttpWebRequestContent(url, model, HttpMethod.Put);
- Send(request);
- }
- #if ASYNC
- public async Task UpdateConnectionStringAsync(string id, UpdateDataSourceConnectionStringVM model)
- {
- var url = GetUpdateDataSourceConnectionURL(id);
- var request = await GetHttpWebRequestContentAsync(url, model, HttpMethod.Put);
- await SendAsync(request);
- }
- #endif
- #region CreatingURL
- protected string CreateDataSourceURL()
- {
- var urlBuilder_ = new StringBuilder();
- urlBuilder_.Append(API_DATA_SOURCE_BASEPATH);
- var url_ = urlBuilder_.ToString();
- return url_;
- }
- protected string GetAvailableDataSourcesURL(DataSourcesOptions options)
- {
- var queryBuilder_ = new StringBuilder();
- queryBuilder_.Append(API_DATA_SOURCE_BASEPATH).Append('?');
- if (options.SubscriptionId != null)
- queryBuilder_.Append("subscriptionId=").Append(options.SubscriptionId).Append('&');
- if (options.Skip != null)
- queryBuilder_.Append("skip=").Append(options.Skip.Value).Append('&');
- if (options.Take != null)
- queryBuilder_.Append("take=").Append(options.Take.Value).Append('&');
- queryBuilder_.Length--;
- return queryBuilder_.ToString();
- }
- protected string GetDataSourceURL(string id)
- {
- var urlBuilder_ = new StringBuilder();
- urlBuilder_.Append(API_DATA_SOURCE_BASEPATH).Append("/{id}");
- urlBuilder_.Replace("{id}", id);
- return urlBuilder_.ToString();
- }
- protected string GetFetchDataURL(string id)
- {
- var urlBuilder_ = new StringBuilder();
- urlBuilder_.Append(API_DATA_SOURCE_BASEPATH).Append($"/{id}/").Append("fetch");
- return urlBuilder_.ToString();
- }
- protected string GetUpdateSubscriptionDataSourceURL(string id)
- {
- var urlBuilder_ = new StringBuilder();
- urlBuilder_.Append(API_DATA_SOURCE_BASEPATH).Append($"/{id}/").Append("updateSubscription");
- return urlBuilder_.ToString();
- }
- protected string GetRenameDataSourceURL(string id)
- {
- var urlBuilder_ = new StringBuilder();
- urlBuilder_.Append(API_DATA_SOURCE_BASEPATH).Append($"/{id}/").Append("rename");
- return urlBuilder_.ToString();
- }
- protected string GetUpdateDataSourceConnectionURL(string id)
- {
- var urlBuilder_ = new StringBuilder();
- urlBuilder_.Append(API_DATA_SOURCE_BASEPATH).Append($"/{id}/").Append("ConnectionString");
- return urlBuilder_.ToString();
- }
- #endregion
- }
- }
|