add support for REST-ful API building
- allow parameters within url - allow different methods other then just POST -> still needs to be tested!
This commit is contained in:
@@ -16,42 +16,62 @@ public class ApiClient(string apiUrl) : IApiClient
|
||||
|
||||
public virtual Task<ApiResponse> SendRequest(string route)
|
||||
{
|
||||
return SendRequest(route, null);
|
||||
return SendRequest(route, HttpMethod.Post);
|
||||
}
|
||||
|
||||
public virtual Task<ApiResponse> SendRequest(string route, HttpMethod method)
|
||||
{
|
||||
return SendRequest(route, method, null);
|
||||
}
|
||||
|
||||
public virtual Task<ApiResponse> SendRequest(string route, ApiMessage? message)
|
||||
{
|
||||
return SendRequest(route, message, null);
|
||||
return SendRequest(route, HttpMethod.Post, message);
|
||||
}
|
||||
|
||||
public virtual async Task<ApiResponse> SendRequest(string route, ApiMessage? message, IApiMessageSerializer? serializer)
|
||||
public virtual Task<ApiResponse> SendRequest(string route, HttpMethod method, ApiMessage? message)
|
||||
{
|
||||
return SendRequest(route, method, message, null);
|
||||
}
|
||||
|
||||
public virtual async Task<ApiResponse> SendRequest(string route, HttpMethod method, ApiMessage? message, IApiMessageSerializer? serializer)
|
||||
{
|
||||
serializer ??= Serializer;
|
||||
|
||||
Log.InfoFormat("Send message to {0}", route);
|
||||
|
||||
var res = await Send(route, message, serializer);
|
||||
var res = await Send(route, method, message, serializer);
|
||||
|
||||
return new(res.StatusCode);
|
||||
}
|
||||
|
||||
public virtual Task<ApiResponse<TResponse>> SendRequest<TResponse>(string route) where TResponse : ApiMessage
|
||||
{
|
||||
return SendRequest<TResponse>(route, null);
|
||||
return SendRequest<TResponse>(route, HttpMethod.Post);
|
||||
}
|
||||
|
||||
public virtual Task<ApiResponse<TResponse>> SendRequest<TResponse>(string route, HttpMethod method) where TResponse : ApiMessage
|
||||
{
|
||||
return SendRequest<TResponse>(route, method, null);
|
||||
}
|
||||
|
||||
public virtual Task<ApiResponse<TResponse>> SendRequest<TResponse>(string route, ApiMessage? message) where TResponse : ApiMessage
|
||||
{
|
||||
return SendRequest<TResponse>(route, message, null);
|
||||
return SendRequest<TResponse>(route, HttpMethod.Post, message);
|
||||
}
|
||||
|
||||
public virtual async Task<ApiResponse<TResponse>> SendRequest<TResponse>(string route, ApiMessage? message, IApiMessageSerializer? serializer) where TResponse : ApiMessage
|
||||
public virtual Task<ApiResponse<TResponse>> SendRequest<TResponse>(string route, HttpMethod method, ApiMessage? message) where TResponse : ApiMessage
|
||||
{
|
||||
return SendRequest<TResponse>(route, method, message, null);
|
||||
}
|
||||
|
||||
public virtual async Task<ApiResponse<TResponse>> SendRequest<TResponse>(string route, HttpMethod method, ApiMessage? message, IApiMessageSerializer? serializer) where TResponse : ApiMessage
|
||||
{
|
||||
serializer ??= Serializer;
|
||||
|
||||
Log.InfoFormat("Send request to {0}", route);
|
||||
|
||||
var res = await Send(route, message, serializer);
|
||||
var res = await Send(route, method, message, serializer);
|
||||
TResponse? result = null;
|
||||
|
||||
if (res.IsSuccessStatusCode)
|
||||
@@ -60,7 +80,7 @@ public class ApiClient(string apiUrl) : IApiClient
|
||||
return new(res.StatusCode, result);
|
||||
}
|
||||
|
||||
protected virtual async Task<HttpResponseMessage> Send(string route, ApiMessage? message, IApiMessageSerializer serializer)
|
||||
protected virtual async Task<HttpResponseMessage> Send(string route, HttpMethod method, ApiMessage? message, IApiMessageSerializer serializer)
|
||||
{
|
||||
var url = ApiUrl + route;
|
||||
HttpContent content;
|
||||
@@ -80,7 +100,12 @@ public class ApiClient(string apiUrl) : IApiClient
|
||||
|
||||
Log.Debug("Sending request");
|
||||
|
||||
return await httpClient.PostAsync(url, content);
|
||||
var httpmsg = new HttpRequestMessage(method, url)
|
||||
{
|
||||
Content = content
|
||||
};
|
||||
|
||||
return await httpClient.SendAsync(httpmsg);
|
||||
}
|
||||
|
||||
protected virtual string? EncodeAuthKey()
|
||||
|
||||
Reference in New Issue
Block a user