some more work on api

This commit is contained in:
Pilzinsel64
2024-08-16 09:19:03 +02:00
parent 6f5e012cb6
commit df4adb8435
8 changed files with 90 additions and 27 deletions

View File

@@ -14,24 +14,24 @@ public class ApiClient(string apiUrl) : IApiClient
public ILogger Log { get; set; } = NullLogger.Instance;
public virtual async Task<ApiResponse> SendMessage<TResponse>(string url, ApiMessage message, IMessageSerializer? serializer)
public virtual async Task<ApiResponse> SendMessage<TResponse>(string route, ApiMessage message, IMessageSerializer? serializer = null)
{
serializer ??= Serializer;
Log.InfoFormat("Send message to {0}", url);
Log.InfoFormat("Send message to {0}", route);
var res = await Send(url, message, serializer);
var res = await Send(route, message, serializer);
return new(res.StatusCode);
}
public virtual async Task<ApiResponse<TResponse>> SendRequest<TResponse>(string url, ApiMessage message, IMessageSerializer? serializer) where TResponse : ApiMessage
public virtual async Task<ApiResponse<TResponse>> SendRequest<TResponse>(string route, ApiMessage message, IMessageSerializer? serializer = null) where TResponse : ApiMessage
{
serializer ??= Serializer;
Log.InfoFormat("Send request to {0}", url);
Log.InfoFormat("Send request to {0}", route);
var res = await Send(url, message, serializer);
var res = await Send(route, message, serializer);
TResponse? result = null;
if (res.IsSuccessStatusCode)
@@ -40,11 +40,16 @@ public class ApiClient(string apiUrl) : IApiClient
return new(res.StatusCode, result);
}
protected virtual async Task<HttpResponseMessage> Send(string url, ApiMessage message, IMessageSerializer serializer)
protected virtual async Task<HttpResponseMessage> Send(string route, ApiMessage message, IMessageSerializer serializer)
{
var fullRequestUrl = ApiUrl + url;
var url = ApiUrl + route;
var content = new StringContent(serializer.Serialize(message)!, null, "application/json");
content.Headers.Add("API-AUTH-KEY", AuthKey);
return await httpClient.PostAsync(fullRequestUrl, content);
content.Headers.Add("API-AUTH-KEY", EncodeAuthKey());
return await httpClient.PostAsync(url, content);
}
protected virtual string? EncodeAuthKey()
{
return AuthKey;
}
}