Skip to content

Commit

Permalink
Refactoring of HttpClientHelper.
Browse files Browse the repository at this point in the history
Changes in error logging
  • Loading branch information
TomekMelissa committed Feb 25, 2020
1 parent d5d2376 commit 75db613
Show file tree
Hide file tree
Showing 35 changed files with 2,391 additions and 1,557 deletions.
9 changes: 7 additions & 2 deletions Common/Common.csproj
Expand Up @@ -50,9 +50,11 @@
<Link>Version.cs</Link>
</Compile>
<Compile Include="Contracts\ContractEnums.cs" />
<Compile Include="Contracts\OdataActionsConstants.cs" />
<Compile Include="Contracts\ConnectorApiActions.cs" />
<Compile Include="Contracts\PackageApiActions.cs" />
<Compile Include="Helpers\AuthenticationHelper.cs" />
<Compile Include="Helpers\FileOperationsHelper.cs" />
<Compile Include="Helpers\HttpRetryHandler.cs" />
<Compile Include="JobSettings\ExportJobSettings.cs" />
<Compile Include="JobSettings\ImportJobSettings.cs" />
<Compile Include="JobSettings\ExecutionJobSettings.cs" />
Expand Down Expand Up @@ -83,8 +85,11 @@
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<PackageReference Include="log4net">
<Version>2.0.8</Version>
</PackageReference>
<PackageReference Include="Microsoft.Identity.Client">
<Version>4.8.1</Version>
<Version>4.8.2</Version>
</PackageReference>
<PackageReference Include="Newtonsoft.Json">
<Version>12.0.3</Version>
Expand Down
16 changes: 16 additions & 0 deletions Common/Contracts/ConnectorApiActions.cs
@@ -0,0 +1,16 @@
/* Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License. */

namespace RecurringIntegrationsScheduler.Common.Contracts
{
/// <summary>
/// Class holding all requests paths related to Connector API
/// </summary>
public static class ConnectorApiActions
{
public const string EnqueuePath = "api/connector/enqueue/";
public const string DequeuePath = "api/connector/dequeue/";
public const string AckPath = "api/connector/ack/";
public const string JobStatusPath = "api/connector/jobstatus/";
}
}
Expand Up @@ -4,9 +4,9 @@
namespace RecurringIntegrationsScheduler.Common.Contracts
{
/// <summary>
/// Class holding all constant values related to the Odata actions used in this solution
/// Class holding requests paths related to Package API
/// </summary>
public static class OdataActionsConstants
public static class PackageApiActions
{
public const string GetAzureWriteUrlActionPath = "data/DataManagementDefinitionGroups/Microsoft.Dynamics.DataEntities.GetAzureWriteUrl";
public const string GetExecutionSummaryStatusActionPath = "data/DataManagementDefinitionGroups/Microsoft.Dynamics.DataEntities.GetExecutionSummaryStatus";
Expand All @@ -21,4 +21,4 @@ public static class OdataActionsConstants
public const string GenerateImportTargetErrorKeysFilePath = "data/DataManagementDefinitionGroups/Microsoft.Dynamics.DataEntities.GenerateImportTargetErrorKeysFile";
public const string GetExecutionErrorsPath = "data/DataManagementDefinitionGroups/Microsoft.Dynamics.DataEntities.GetExecutionErrors";
}
}
}
10 changes: 10 additions & 0 deletions Common/Contracts/SettingsConstants.cs
Expand Up @@ -332,5 +332,15 @@ public static class SettingsConstants
/// Get execution errors
/// </summary>
public const string GetExecutionErrors = "GetExecutionErrors";

/// <summary>
/// Log verbose
/// </summary>
public const string LogVerbose = "LogVerbose";

/// <summary>
/// Job key
/// </summary>
public const string JobKey = "JobKey";
}
}
14 changes: 5 additions & 9 deletions Common/Helpers/AuthenticationHelper.cs
Expand Up @@ -2,7 +2,6 @@
Licensed under the MIT License. */

using Microsoft.Identity.Client;
using Polly.Retry;
using RecurringIntegrationsScheduler.Common.JobSettings;
using System;
using System.Linq;
Expand All @@ -18,18 +17,15 @@ internal class AuthenticationHelper
{
private readonly Settings _settings;
private string _authorizationHeader;
private readonly AsyncRetryPolicy _retryPolicy;
private const string AuthEndpoint = "https://login.microsoftonline.com/";

/// <summary>
/// Initializes a new instance of the <see cref="AuthenticationHelper"/> class.
/// </summary>
/// <param name="jobSettings">Job settings</param>
/// <param name="retryPolicy">Retry policy</param>
public AuthenticationHelper(Settings jobSettings, Polly.Retry.AsyncRetryPolicy retryPolicy)
public AuthenticationHelper(Settings jobSettings)
{
_settings = jobSettings;
_retryPolicy = retryPolicy;
}

/// <summary>
Expand Down Expand Up @@ -62,18 +58,18 @@ private async Task<string> AuthorizationHeader()
.WithClientSecret(_settings.AadClientSecret)
.WithAuthority(authority)
.Build();
AuthenticationResult = await _retryPolicy.ExecuteAsync(() => appConfidential.AcquireTokenForClient(scopes).ExecuteAsync());
AuthenticationResult = await appConfidential.AcquireTokenForClient(scopes).ExecuteAsync();
}
else
{
appPublic = PublicClientApplicationBuilder.Create(_settings.AadClientId.ToString())
.WithAuthority(authority)
.Build();
var accounts = await _retryPolicy.ExecuteAsync(() => appPublic.GetAccountsAsync());
var accounts = await appPublic.GetAccountsAsync();

if (accounts.Any())
{
AuthenticationResult = await _retryPolicy.ExecuteAsync(() => appPublic.AcquireTokenSilent(scopes, accounts.FirstOrDefault()).ExecuteAsync());
AuthenticationResult = await appPublic.AcquireTokenSilent(scopes, accounts.FirstOrDefault()).ExecuteAsync();
}
else
{
Expand All @@ -82,7 +78,7 @@ private async Task<string> AuthorizationHeader()
{
securePassword.AppendChar(c);
}
AuthenticationResult = await _retryPolicy.ExecuteAsync(() => appPublic.AcquireTokenByUsernamePassword(scopes, _settings.UserName, securePassword).ExecuteAsync());
AuthenticationResult = await appPublic.AcquireTokenByUsernamePassword(scopes, _settings.UserName, securePassword).ExecuteAsync();
}
}
return _authorizationHeader = AuthenticationResult.CreateAuthorizationHeader();
Expand Down

0 comments on commit 75db613

Please sign in to comment.