Skip to content
This repository was archived by the owner on Feb 23, 2024. It is now read-only.

Commit c1a043f

Browse files
f-alizadaFarhad Alizada
andauthored
Add http client factory (#764)
* Add httpclientFactory to DI * Add mock IHHtpClientFactory and basic test Co-authored-by: Farhad Alizada <[email protected]>
1 parent b0781ab commit c1a043f

File tree

25 files changed

+227
-15
lines changed

25 files changed

+227
-15
lines changed

src/ArmTemplates/ArmTemplates.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
<PackageReference Include="CommandLineParser" Version="2.8.0" />
2929
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="6.0.1" />
3030
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" />
31+
<PackageReference Include="Microsoft.Extensions.Http" Version="6.0.0" />
3132
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.15.1" />
3233
<PackageReference Include="Serilog.Extensions.Logging" Version="3.1.0" />
3334
<PackageReference Include="Serilog.Sinks.Console" Version="4.0.1" />

src/ArmTemplates/Common/API/Clients/Abstractions/ApiClientBase.cs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,15 @@ namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.API.Clien
1919
public abstract class ApiClientBase
2020
{
2121
readonly IMemoryCache cache = new MemoryCache(new MemoryCacheOptions());
22-
readonly HttpClient httpClient = new HttpClient();
22+
readonly HttpClient httpClient;
2323

2424
protected string BaseUrl { get; private set; } = GlobalConstants.BaseManagementAzureUrl;
2525

26-
protected AzureCliAuthenticator Auth { get; private set; } = new AzureCliAuthenticator();
26+
protected virtual AzureCliAuthenticator Auth { get; private set; } = new AzureCliAuthenticator();
2727

28-
public ApiClientBase(string baseUrl = null)
28+
public ApiClientBase(IHttpClientFactory httpClientFactory)
2929
{
30-
if (!string.IsNullOrEmpty(baseUrl))
31-
{
32-
this.BaseUrl = baseUrl;
33-
}
30+
this.httpClient = httpClientFactory.CreateClient();
3431
}
3532

3633
protected async Task<string> CallApiManagementAsync(string azToken, string requestUrl, bool useCache = true, ClientHttpMethod method = ClientHttpMethod.GET)

src/ArmTemplates/Common/API/Clients/ApiOperations/ApiOperationClient.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// --------------------------------------------------------------------------
55

66
using System.Collections.Generic;
7+
using System.Net.Http;
78
using System.Threading.Tasks;
89
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.API.Clients.Abstractions;
910
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Constants;
@@ -16,6 +17,10 @@ public class ApiOperationClient : ApiClientBase, IApiOperationClient
1617
{
1718
const string GetOperationsLinkedToApiRequest = "{0}/subscriptions/{1}/resourceGroups/{2}/providers/Microsoft.ApiManagement/service/{3}/apis/{4}/operations?api-version={5}";
1819

20+
public ApiOperationClient(IHttpClientFactory httpClientFactory) : base(httpClientFactory)
21+
{
22+
}
23+
1924
public async Task<List<ApiOperationTemplateResource>> GetOperationsLinkedToApiAsync(string apiName, ExtractorParameters extractorParameters)
2025
{
2126
var (azToken, azSubId) = await this.Auth.GetAccessToken();

src/ArmTemplates/Common/API/Clients/ApiRevision/ApiRevisionClient.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// --------------------------------------------------------------------------
55

66
using System.Collections.Generic;
7+
using System.Net.Http;
78
using System.Threading.Tasks;
89
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.API.Clients.Abstractions;
910
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Constants;
@@ -16,6 +17,10 @@ public class ApiRevisionClient : ApiClientBase, IApiRevisionClient
1617
{
1718
const string GetApiRevisionsRequest = "{0}/subscriptions/{1}/resourceGroups/{2}/providers/Microsoft.ApiManagement/service/{3}/apis/{4}/revisions?api-version={5}";
1819

20+
public ApiRevisionClient(IHttpClientFactory httpClientFactory) : base(httpClientFactory)
21+
{
22+
}
23+
1924
public async Task<List<ApiRevisionTemplateResource>> GetApiRevisionsAsync(string apiName, ExtractorParameters extractorParameters)
2025
{
2126
var (azToken, azSubId) = await this.Auth.GetAccessToken();

src/ArmTemplates/Common/API/Clients/ApiSchemas/ApiSchemaClient.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// --------------------------------------------------------------------------
55

66
using System.Collections.Generic;
7+
using System.Net.Http;
78
using System.Threading.Tasks;
89
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.API.Clients.Abstractions;
910
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Constants;
@@ -16,6 +17,10 @@ public class ApiSchemaClient : ApiClientBase, IApiSchemaClient
1617
{
1718
const string GetAllApiSchemasRequest = "{0}/subscriptions/{1}/resourceGroups/{2}/providers/Microsoft.ApiManagement/service/{3}/apis/{4}/schemas?api-version={5}";
1819

20+
public ApiSchemaClient(IHttpClientFactory httpClientFactory) : base(httpClientFactory)
21+
{
22+
}
23+
1924
public async Task<List<ApiSchemaTemplateResource>> GetApiSchemasAsync(string apiName, ExtractorParameters extractorParameters)
2025
{
2126
var (azToken, azSubId) = await this.Auth.GetAccessToken();

src/ArmTemplates/Common/API/Clients/ApiVersionSet/ApiVersionSetClient.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// --------------------------------------------------------------------------
55

66
using System.Collections.Generic;
7+
using System.Net.Http;
78
using System.Threading.Tasks;
89
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.API.Clients.Abstractions;
910
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Constants;
@@ -16,6 +17,10 @@ public class ApiVersionSetClient : ApiClientBase, IApiVersionSetClient
1617
{
1718
const string GetAllVersionSetsRequest = "{0}/subscriptions/{1}/resourceGroups/{2}/providers/Microsoft.ApiManagement/service/{3}/apiVersionSets?api-version={4}";
1819

20+
public ApiVersionSetClient(IHttpClientFactory httpClientFactory) : base(httpClientFactory)
21+
{
22+
}
23+
1924
public async Task<List<ApiVersionSetTemplateResource>> GetAllAsync(ExtractorParameters extractorParameters)
2025
{
2126
var (azToken, azSubId) = await this.Auth.GetAccessToken();

src/ArmTemplates/Common/API/Clients/Apis/ApisClient.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// --------------------------------------------------------------------------
55

66
using System.Collections.Generic;
7+
using System.Net.Http;
78
using System.Threading.Tasks;
89
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.API.Clients.Abstractions;
910
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Constants;
@@ -19,6 +20,10 @@ public class ApisClient : ApiClientBase, IApisClient
1920
const string GetAllApisLinkedToProductRequest = "{0}/subscriptions/{1}/resourceGroups/{2}/providers/Microsoft.ApiManagement/service/{3}/products/{4}/apis?api-version={5}";
2021
const string GetApisLinkedToGatewayRequest = "{0}/subscriptions/{1}/resourceGroups/{2}/providers/Microsoft.ApiManagement/service/{3}/gateways/{4}/apis?api-version={5}";
2122

23+
public ApisClient(IHttpClientFactory httpClientFactory) : base(httpClientFactory)
24+
{
25+
}
26+
2227
public async Task<ApiTemplateResource> GetSingleAsync(string apiName, ExtractorParameters extractorParameters)
2328
{
2429
var (azToken, azSubId) = await this.Auth.GetAccessToken();

src/ArmTemplates/Common/API/Clients/AuthorizationServer/AuthorizationServerClient.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// --------------------------------------------------------------------------
55

66
using System.Collections.Generic;
7+
using System.Net.Http;
78
using System.Threading.Tasks;
89
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.API.Clients.Abstractions;
910
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Constants;
@@ -16,6 +17,10 @@ public class AuthorizationServerClient : ApiClientBase, IAuthorizationServerClie
1617
{
1718
const string GetAllAuthorizationServersRequest = "{0}/subscriptions/{1}/resourceGroups/{2}/providers/Microsoft.ApiManagement/service/{3}/authorizationServers?api-version={4}";
1819

20+
public AuthorizationServerClient(IHttpClientFactory httpClientFactory) : base(httpClientFactory)
21+
{
22+
}
23+
1924
public async Task<List<AuthorizationServerTemplateResource>> GetAllAsync(ExtractorParameters extractorParameters)
2025
{
2126
var (azToken, azSubId) = await this.Auth.GetAccessToken();

src/ArmTemplates/Common/API/Clients/Backend/BackendClient.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// --------------------------------------------------------------------------
55

66
using System.Collections.Generic;
7+
using System.Net.Http;
78
using System.Threading.Tasks;
89
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.API.Clients.Abstractions;
910
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Constants;
@@ -16,6 +17,10 @@ public class BackendClient : ApiClientBase, IBackendClient
1617
{
1718
const string GetAllBackendsRequest = "{0}/subscriptions/{1}/resourceGroups/{2}/providers/Microsoft.ApiManagement/service/{3}/backends?api-version={4}";
1819

20+
public BackendClient(IHttpClientFactory httpClientFactory) : base(httpClientFactory)
21+
{
22+
}
23+
1924
public async Task<List<BackendTemplateResource>> GetAllAsync(ExtractorParameters extractorParameters)
2025
{
2126
var (azToken, azSubId) = await this.Auth.GetAccessToken();

src/ArmTemplates/Common/API/Clients/Diagnostics/DiagnosticClient.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// --------------------------------------------------------------------------
55

66
using System.Collections.Generic;
7+
using System.Net.Http;
78
using System.Threading.Tasks;
89
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.API.Clients.Abstractions;
910
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Constants;
@@ -17,6 +18,10 @@ public class DiagnosticClient : ApiClientBase, IDiagnosticClient
1718
const string GetAllDiagnosticsRequest = "{0}/subscriptions/{1}/resourceGroups/{2}/providers/Microsoft.ApiManagement/service/{3}/diagnostics?api-version={4}";
1819
const string GetDiagnosticsLinkedToApiRequest = "{0}/subscriptions/{1}/resourceGroups/{2}/providers/Microsoft.ApiManagement/service/{3}/apis/{4}/diagnostics?api-version={5}";
1920

21+
public DiagnosticClient(IHttpClientFactory httpClientFactory) : base(httpClientFactory)
22+
{
23+
}
24+
2025
public async Task<List<DiagnosticTemplateResource>> GetApiDiagnosticsAsync(string apiName, ExtractorParameters extractorParameters)
2126
{
2227
var (azToken, azSubId) = await this.Auth.GetAccessToken();

0 commit comments

Comments
 (0)