refactor: Generische Methoden für Rückgabetypen in DocumentsRouteService hinzugefügt

- Refaktorierte CreateAsync-, UploadAsync-, UpdateAsync-, DownloadAsync- und DeleteAsync-Methoden, um generische TData- und TError-Typen zu unterstützen.
- Dynamische Overloads für Create-, Upload-, Update-, Download- und Delete-Methoden hinzugefügt für flexible Anwendungsfälle.
- Methoden-Signaturen aktualisiert, um bessere Typinferenz und Handhabung verschiedener Rückgabetypen zu ermöglichen.
This commit is contained in:
Developer 02
2024-09-13 14:38:09 +02:00
parent 3be920c06a
commit 4aa696410c

View File

@@ -21,15 +21,17 @@ namespace WindreamHub.Legacy.Client.Routes
{
}
public async Task<SimplifiedResponse<DocResponse, DocResponse>> CreateAsync(HttpContent docCreateBody)
=> await FetchAsync(route: "/Create", method: HttpMethod.Post, body: docCreateBody)
.ThenAsync(res => res.Simplify<DocResponse, DocResponse>());
public async Task<SimplifiedResponse<DocResponse, DocResponse>> CreateAsync(DocBody docCreateBody)
//Create
public async Task<SimplifiedResponse<TData, TError>> CreateAsync<TData, TError>(DocBody docCreateBody)
=> await FetchAsync(route: "/Create", method: HttpMethod.Post, body: docCreateBody.Stringify())
.ThenAsync(res => res.Simplify<DocResponse, DocResponse>());
.ThenAsync(res => res.Simplify<TData, TError>());
public async Task<SimplifiedResponse<DocResponse, DocResponse>> UploadAsync(string path, long? item_id = null, string item_location = null, string item_name = null, object stream_identity = null, params Flag[] flags)
public Task<SimplifiedResponse<dynamic, dynamic>> CreateDynamicAsync(DocBody docCreateBody) => CreateAsync<dynamic, dynamic>(docCreateBody);
public Task<SimplifiedResponse<DocResponse, DocResponse>> CreateAsync(DocBody docCreateBody) => CreateAsync<DocResponse, DocResponse>(docCreateBody);
//Upload
public async Task<SimplifiedResponse<TData, TError>> UploadAsync<TData, TError>(string path, long? item_id = null, string item_location = null, string item_name = null, object stream_identity = null, params Flag[] flags)
{
using (var fileStream = File.OpenRead(path))
{
@@ -54,19 +56,31 @@ namespace WindreamHub.Legacy.Client.Routes
query["parameter.flags"] = string.Join(",", flags.Select(flag => (int)flag));
if (stream_identity != null)
query["parameter.stream.__identity"] = stream_identity.ToString();
query["parameter.stream.__identity"] = stream_identity.ToString();
return await FetchAsync(route: $"/Upload?{query}", method: HttpMethod.Post, body: fileContent).ThenAsync(res => res.Simplify<DocResponse, DocResponse>());
return await FetchAsync(route: $"/Upload?{query}", method: HttpMethod.Post, body: fileContent).ThenAsync(res => res.Simplify<TData, TError>());
}
}
public async Task<SimplifiedResponse<DocResponse, DocResponse>> UpdateAsync(DocBody docUpdateBody)
=> await FetchAsync(route: "/Update", method: HttpMethod.Post, body: docUpdateBody.Stringify())
.ThenAsync(res => res.Simplify<DocResponse, DocResponse>());
public Task<SimplifiedResponse<dynamic, dynamic>> UploadDynamicAsync(string path, long? item_id = null, string item_location = null, string item_name = null, object stream_identity = null, params Flag[] flags)
=> UploadAsync<dynamic, dynamic>(path: path, item_id: item_id, item_location: item_location, item_name: item_name, stream_identity: stream_identity, flags: flags);
public async Task<SimplifiedResponse<DocResponse, DocResponse>> DownloadAsync(long? item_id = null, string item_location = null, string item_name = null, object stream_identity = null, params Flag[] flags)
public Task<SimplifiedResponse<DocResponse, DocResponse>> UploadAsync(string path, long? item_id = null, string item_location = null, string item_name = null, object stream_identity = null, params Flag[] flags)
=> UploadAsync<DocResponse, DocResponse>(path: path, item_id: item_id, item_location: item_location, item_name: item_name, stream_identity: stream_identity, flags: flags);
//Update
public async Task<SimplifiedResponse<TData, TError>> UpdateAsync<TData, TError>(DocBody docUpdateBody)
=> await FetchAsync(route: "/Update", method: HttpMethod.Post, body: docUpdateBody.Stringify())
.ThenAsync(res => res.Simplify<TData, TError>());
public Task<SimplifiedResponse<dynamic, dynamic>> UpdateDynamicAsync(DocBody docUpdateBody)
=> UpdateAsync<dynamic, dynamic>(docUpdateBody);
public Task<SimplifiedResponse<DocResponse, DocResponse>> UpdateAsync(DocBody docUpdateBody)
=> UpdateAsync<DocResponse, DocResponse>(docUpdateBody);
//Download
public async Task<SimplifiedResponse<TData, TError>> DownloadAsync<TData, TError>(long? item_id = null, string item_location = null, string item_name = null, object stream_identity = null, params Flag[] flags)
{
var query = HttpUtility.ParseQueryString(string.Empty);
@@ -85,11 +99,24 @@ namespace WindreamHub.Legacy.Client.Routes
if (stream_identity != null)
query["parameter.stream.__identity"] = stream_identity.ToString();
return await FetchAsync(route: $"/Download?{query}", method: HttpMethod.Get).ThenAsync(res => res.Simplify<DocResponse, DocResponse>());
return await FetchAsync(route: $"/Download?{query}", method: HttpMethod.Get).ThenAsync(res => res.Simplify<TData, TError>());
}
public async Task<SimplifiedResponse<DocResponse, DocDelErrorResponse>> DeleteAsync(DocDeleteBody docDeleteBody)
public Task<SimplifiedResponse<dynamic, dynamic>> DownloadDynamicAsync(long? item_id = null, string item_location = null, string item_name = null, object stream_identity = null, params Flag[] flags)
=> DownloadAsync<dynamic, dynamic>(item_id: item_id, item_location: item_location, item_name: item_name, stream_identity: stream_identity, flags: flags);
public Task<SimplifiedResponse<DocResponse, DocResponse>> DownloadAsync(long? item_id = null, string item_location = null, string item_name = null, object stream_identity = null, params Flag[] flags)
=> DownloadAsync<DocResponse, DocResponse>(item_id: item_id, item_location: item_location, item_name: item_name, stream_identity: stream_identity, flags: flags);
//Delete
public async Task<SimplifiedResponse<TData, TError>> DeleteAsync<TData, TError>(DocDeleteBody docDeleteBody)
=> await FetchAsync(route: "/Delete", HttpMethod.Post, body: docDeleteBody.Stringify())
.ThenAsync(res => res.Simplify<DocResponse, DocDelErrorResponse>());
.ThenAsync(res => res.Simplify<TData, TError>());
public async Task<SimplifiedResponse<dynamic, dynamic>> DeleteDynamicAsync(DocDeleteBody docDeleteBody)
=> await DeleteAsync<dynamic, dynamic>(docDeleteBody: docDeleteBody);
public async Task<SimplifiedResponse<DocResponse, DocDelErrorResponse>> DeleteAsync(DocDeleteBody docDeleteBody)
=> await DeleteAsync<DocResponse, DocDelErrorResponse>(docDeleteBody: docDeleteBody);
}
}