This repository has been archived on 2025-05-19. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
novaloop.paymoapi/src/Extensions/HttpClientExtensions.cs
Matthias Langhard 75a687e31e chore: initial commit
2020-12-09 12:36:26 +01:00

37 lines
1.3 KiB
C#

using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
namespace Novaloop.PaymoApi.Extensions
{
internal static class HttpClientExtensions
{
internal static void SetApiKeyHeader(this HttpClient client, string apiKey)
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Base64Encode($"{apiKey}:random"));
}
internal static async Task<HttpResponseMessage> PatchAsync(this HttpClient client, string uri, HttpContent content)
{
var method = new HttpMethod("PATCH");
if (client.BaseAddress is null)
{
throw new ArgumentException("Can not handle 'BaseAddress' null value configuration.");
}
var request = new HttpRequestMessage(method, new Uri(CombineBaseUrlWithSegment(client.BaseAddress.ToString(), uri))) {Content = content};
return await client.SendAsync(request);
}
private static string CombineBaseUrlWithSegment(string uri1, string uri2)
{
return $"{uri1.TrimEnd('/')}/{uri2.TrimStart('/')}";
}
private static string Base64Encode(string plainText)
{
return Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(plainText));
}
}
}