Skip to content

Commit ad4d288

Browse files
author
Anders Tøgersen (Delegate)
committed
Implemented Factories to use TokenCredential Authorization
1 parent b9360a0 commit ad4d288

File tree

2 files changed

+67
-0
lines changed

2 files changed

+67
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using Atc.Azure.Options.Authorization;
2+
using Atc.Azure.Options.Environment;
3+
using Atc.Azure.Options.EventHub;
4+
using Atc.Azure.Options.Providers;
5+
using Azure.Identity;
6+
using Azure.Messaging.EventHubs.Producer;
7+
8+
namespace Atc.Azure.Messaging.EventHub;
9+
10+
#pragma warning disable CA2000 // Dispose objects before losing scope
11+
12+
public class EventHubCredentialsPublisherFactory : IEventHubPublisherFactory
13+
{
14+
private readonly string fullyQualifiedNamespace;
15+
private readonly DefaultAzureCredentialOptions credentialOptions;
16+
17+
public EventHubCredentialsPublisherFactory(
18+
EventHubOptions options,
19+
EnvironmentOptions environmentOptions,
20+
ClientAuthorizationOptions clientCredentialOptions,
21+
IAzureCredentialOptionsProvider credentialOptionsProvider)
22+
{
23+
this.fullyQualifiedNamespace = options.FullyQualifiedNamespace;
24+
this.credentialOptions = credentialOptionsProvider
25+
.GetAzureCredentialOptions(
26+
environmentOptions,
27+
clientCredentialOptions);
28+
}
29+
30+
public IEventHubPublisher Create(string eventHubName)
31+
=> new EventHubPublisher(
32+
new EventHubProducerClient(
33+
fullyQualifiedNamespace,
34+
eventHubName,
35+
new DefaultAzureCredential(credentialOptions)));
36+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
using Atc.Azure.Options.Authorization;
2+
using Atc.Azure.Options.Environment;
3+
using Atc.Azure.Options.Providers;
4+
using Atc.Azure.Options.ServiceBus;
5+
using Azure.Identity;
6+
using Azure.Messaging.ServiceBus;
7+
8+
namespace Atc.Azure.Messaging.ServiceBus;
9+
10+
public class ServiceBusCredentialsClientFactory : IServiceBusClientFactory
11+
{
12+
private readonly string fullyQualifiedNamespace;
13+
private readonly DefaultAzureCredentialOptions credentialOptions;
14+
15+
public ServiceBusCredentialsClientFactory(
16+
ServiceBusOptions options,
17+
EnvironmentOptions environmentOptions,
18+
ClientAuthorizationOptions clientCredentialOptions,
19+
IAzureCredentialOptionsProvider credentialOptionsProvider)
20+
{
21+
this.fullyQualifiedNamespace = options.FullyQualifiedNamespace;
22+
this.credentialOptions = credentialOptionsProvider
23+
.GetAzureCredentialOptions(
24+
environmentOptions,
25+
clientCredentialOptions);
26+
}
27+
28+
public ServiceBusClient Create() => new ServiceBusClient(
29+
fullyQualifiedNamespace,
30+
new DefaultAzureCredential(credentialOptions));
31+
}

0 commit comments

Comments
 (0)