Skip to content

Commit 2a22067

Browse files
sorenhansenSøren Hansen
and
Søren Hansen
authored
Public default settings (#191)
* Make default configuration values publicly available as constants. * Make default settings public, so they can be accessed from the outside. * Add public settings to api * - Revert DefaultSasTokenValidationTime to internal - Document default value in constructor. * Move default configuration constants to the AzureStorageAttachmentConfigurationConstants class * Removed superfluous comment Co-authored-by: Søren Hansen <[email protected]>
1 parent 5dd4690 commit 2a22067

10 files changed

+80
-43
lines changed

README.md

+21-12
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ var serialized = JsonConvert.SerializeObject(payload);
118118
var payloadAsBytes = Encoding.UTF8.GetBytes(serialized);
119119
var message = new Message(payloadAsBytes);
120120
```
121-
<sup><a href='/src/ServiceBus.AttachmentPlugin.Tests/Snippets.cs#L99-L109' title='File snippet `attachmentsendingsas` was extracted from'>snippet source</a> | <a href='#snippet-attachmentsendingsas' title='Navigate to start of snippet `attachmentsendingsas`'>anchor</a></sup>
121+
<sup><a href='/src/ServiceBus.AttachmentPlugin.Tests/Snippets.cs#L111-L121' title='File snippet `attachmentsendingsas` was extracted from'>snippet source</a> | <a href='#snippet-attachmentsendingsas' title='Navigate to start of snippet `attachmentsendingsas`'>anchor</a></sup>
122122
<!-- endsnippet -->
123123

124124
Receiving only mode (w/o Storage account credentials)
@@ -131,20 +131,20 @@ Receiving only mode (w/o Storage account credentials)
131131
messageReceiver.RegisterAzureStorageAttachmentPluginForReceivingOnly("mySasUriProperty");
132132
var message = await messageReceiver.ReceiveAsync().ConfigureAwait(false);
133133
```
134-
<sup><a href='/src/ServiceBus.AttachmentPlugin.Tests/Snippets.cs#L115-L122' title='File snippet `attachmentreceivingsas` was extracted from'>snippet source</a> | <a href='#snippet-attachmentreceivingsas' title='Navigate to start of snippet `attachmentreceivingsas`'>anchor</a></sup>
134+
<sup><a href='/src/ServiceBus.AttachmentPlugin.Tests/Snippets.cs#L127-L134' title='File snippet `attachmentreceivingsas` was extracted from'>snippet source</a> | <a href='#snippet-attachmentreceivingsas' title='Navigate to start of snippet `attachmentreceivingsas`'>anchor</a></sup>
135135
<!-- endsnippet -->
136136

137137
### Configure blob container name
138138

139-
Default container name is "attachments". The value is available via `AzureStorageAttachmentConfiguration.DefaultContainerName` constant.
139+
Default container name is "attachments". The value is available via `AzureStorageAttachmentConfigurationConstants.DefaultContainerName` constant.
140140

141141
```c#
142142
new AzureStorageAttachmentConfiguration(storageConnectionString, containerName:"blobs");
143143
```
144144

145145
### Configure message property to identify attachment blob
146146

147-
Default blob identifier property name is "$attachment.blob". The value is available via `AzureStorageAttachmentConfiguration.DefaultMessagePropertyToIdentifyAttachmentBlob` constant.
147+
Default blob identifier property name is "$attachment.blob". The value is available via `AzureStorageAttachmentConfigurationConstants.DefaultMessagePropertyToIdentifyAttachmentBlob` constant.
148148

149149
```c#
150150
new AzureStorageAttachmentConfiguration(storageConnectionString, messagePropertyToIdentifyAttachmentBlob: "myblob");
@@ -173,11 +173,20 @@ sender.RegisterAzureStorageAttachmentPlugin(config);
173173

174174
### Configure message property for SAS uri to attachment blob
175175

176-
Default SAS uri property name is "$attachment.sas.uri".
176+
Default SAS uri property name is "$attachment.sas.uri". The value is available via `AzureStorageAttachmentConfigurationConstants.DefaultMessagePropertyToIdentitySasUri` constant.
177177

178-
```c#
179-
new AzureStorageAttachmentConfiguration(storageConnectionString).WithSasUri(messagePropertyToIdentifySasUri: "mySasUriProperty");
178+
Default SAS token validation time is 7 days.
179+
180+
<!-- snippet: Configure_blob_sas_uri_override -->
181+
<a id='snippet-configure_blob_sas_uri_override'/></a>
182+
```cs
183+
new AzureStorageAttachmentConfiguration(storageConnectionString)
184+
.WithBlobSasUri(
185+
messagePropertyToIdentifySasUri: "mySasUriProperty",
186+
sasTokenValidationTime: TimeSpan.FromHours(12));
180187
```
188+
<sup><a href='/src/ServiceBus.AttachmentPlugin.Tests/Snippets.cs#L85-L92' title='File snippet `configure_blob_sas_uri_override` was extracted from'>snippet source</a> | <a href='#snippet-configure_blob_sas_uri_override' title='Navigate to start of snippet `configure_blob_sas_uri_override`'>anchor</a></sup>
189+
<!-- endsnippet -->
181190

182191
### Configure criteria for message max size identification
183192

@@ -190,7 +199,7 @@ Default is to convert any body to attachment.
190199
new AzureStorageAttachmentConfiguration(storageConnectionString,
191200
messageMaxSizeReachedCriteria: message => message.Body.Length > 200 * 1024);
192201
```
193-
<sup><a href='/src/ServiceBus.AttachmentPlugin.Tests/Snippets.cs#L127-L133' title='File snippet `configure_criteria_for_message_max_size_identification` was extracted from'>snippet source</a> | <a href='#snippet-configure_criteria_for_message_max_size_identification' title='Navigate to start of snippet `configure_criteria_for_message_max_size_identification`'>anchor</a></sup>
202+
<sup><a href='/src/ServiceBus.AttachmentPlugin.Tests/Snippets.cs#L139-L145' title='File snippet `configure_criteria_for_message_max_size_identification` was extracted from'>snippet source</a> | <a href='#snippet-configure_criteria_for_message_max_size_identification' title='Navigate to start of snippet `configure_criteria_for_message_max_size_identification`'>anchor</a></sup>
194203
<!-- endsnippet -->
195204

196205
### Configuring connection string provider
@@ -204,7 +213,7 @@ The plugin comes with a `PlainTextConnectionStringProvider` and can be used in t
204213
var provider = new PlainTextConnectionStringProvider(connectionString);
205214
var config = new AzureStorageAttachmentConfiguration(provider);
206215
```
207-
<sup><a href='/src/ServiceBus.AttachmentPlugin.Tests/Snippets.cs#L139-L144' title='File snippet `configuring_connection_string_provider` was extracted from'>snippet source</a> | <a href='#snippet-configuring_connection_string_provider' title='Navigate to start of snippet `configuring_connection_string_provider`'>anchor</a></sup>
216+
<sup><a href='/src/ServiceBus.AttachmentPlugin.Tests/Snippets.cs#L151-L156' title='File snippet `configuring_connection_string_provider` was extracted from'>snippet source</a> | <a href='#snippet-configuring_connection_string_provider' title='Navigate to start of snippet `configuring_connection_string_provider`'>anchor</a></sup>
208217
<!-- endsnippet -->
209218

210219
### Configuring plugin using StorageCredentials (Service or Container SAS)
@@ -215,7 +224,7 @@ var config = new AzureStorageAttachmentConfiguration(provider);
215224
var credentials = new StorageCredentials( /*Shared key OR Service SAS OR Container SAS*/);
216225
var config = new AzureStorageAttachmentConfiguration(credentials, blobEndpoint);
217226
```
218-
<sup><a href='/src/ServiceBus.AttachmentPlugin.Tests/Snippets.cs#L150-L155' title='File snippet `configuring_plugin_using_storagecredentials` was extracted from'>snippet source</a> | <a href='#snippet-configuring_plugin_using_storagecredentials' title='Navigate to start of snippet `configuring_plugin_using_storagecredentials`'>anchor</a></sup>
227+
<sup><a href='/src/ServiceBus.AttachmentPlugin.Tests/Snippets.cs#L162-L167' title='File snippet `configuring_plugin_using_storagecredentials` was extracted from'>snippet source</a> | <a href='#snippet-configuring_plugin_using_storagecredentials' title='Navigate to start of snippet `configuring_plugin_using_storagecredentials`'>anchor</a></sup>
219228
<!-- endsnippet -->
220229

221230
See [`StorageCredentials`](https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.storage.auth.storagecredentials) for more details.
@@ -234,7 +243,7 @@ Upload attachment to Azure Storage blob
234243
//To make it possible to use SAS URI when downloading, use WithBlobSasUri() when creating configuration object
235244
await message.UploadAzureStorageAttachment(config);
236245
```
237-
<sup><a href='/src/ServiceBus.AttachmentPlugin.Tests/Snippets.cs#L160-L165' title='File snippet `upload_attachment_without_registering_plugin` was extracted from'>snippet source</a> | <a href='#snippet-upload_attachment_without_registering_plugin' title='Navigate to start of snippet `upload_attachment_without_registering_plugin`'>anchor</a></sup>
246+
<sup><a href='/src/ServiceBus.AttachmentPlugin.Tests/Snippets.cs#L172-L177' title='File snippet `upload_attachment_without_registering_plugin` was extracted from'>snippet source</a> | <a href='#snippet-upload_attachment_without_registering_plugin' title='Navigate to start of snippet `upload_attachment_without_registering_plugin`'>anchor</a></sup>
238247
<!-- endsnippet -->
239248

240249
Download attachment from Azure Storage blob
@@ -251,7 +260,7 @@ await message.DownloadAzureStorageAttachment("$custom-attachment.sas.uri");
251260
//Using configuration object
252261
await message.DownloadAzureStorageAttachment(config);
253262
```
254-
<sup><a href='/src/ServiceBus.AttachmentPlugin.Tests/Snippets.cs#L169-L180' title='File snippet `download_attachment_without_registering_plugin` was extracted from'>snippet source</a> | <a href='#snippet-download_attachment_without_registering_plugin' title='Navigate to start of snippet `download_attachment_without_registering_plugin`'>anchor</a></sup>
263+
<sup><a href='/src/ServiceBus.AttachmentPlugin.Tests/Snippets.cs#L181-L192' title='File snippet `download_attachment_without_registering_plugin` was extracted from'>snippet source</a> | <a href='#snippet-download_attachment_without_registering_plugin' title='Navigate to start of snippet `download_attachment_without_registering_plugin`'>anchor</a></sup>
255264
<!-- endsnippet -->
256265

257266
#### Additional providers

README.source.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,15 @@ snippet: AttachmentReceivingSas
5252

5353
### Configure blob container name
5454

55-
Default container name is "attachments". The value is available via `AzureStorageAttachmentConfiguration.DefaultContainerName` constant.
55+
Default container name is "attachments". The value is available via `AzureStorageAttachmentConfigurationConstants.DefaultContainerName` constant.
5656

5757
```c#
5858
new AzureStorageAttachmentConfiguration(storageConnectionString, containerName:"blobs");
5959
```
6060

6161
### Configure message property to identify attachment blob
6262

63-
Default blob identifier property name is "$attachment.blob". The value is available via `AzureStorageAttachmentConfiguration.DefaultMessagePropertyToIdentifyAttachmentBlob` constant.
63+
Default blob identifier property name is "$attachment.blob". The value is available via `AzureStorageAttachmentConfigurationConstants.DefaultMessagePropertyToIdentifyAttachmentBlob` constant.
6464

6565
```c#
6666
new AzureStorageAttachmentConfiguration(storageConnectionString, messagePropertyToIdentifyAttachmentBlob: "myblob");
@@ -75,11 +75,11 @@ snippet: Configure_blob_name_override
7575

7676
### Configure message property for SAS uri to attachment blob
7777

78-
Default SAS uri property name is "$attachment.sas.uri".
78+
Default SAS uri property name is "$attachment.sas.uri". The value is available via `AzureStorageAttachmentConfigurationConstants.DefaultMessagePropertyToIdentitySasUri` constant.
7979

80-
```c#
81-
new AzureStorageAttachmentConfiguration(storageConnectionString).WithSasUri(messagePropertyToIdentifySasUri: "mySasUriProperty");
82-
```
80+
Default SAS token validation time is 7 days.
81+
82+
snippet: Configure_blob_sas_uri_override
8383

8484
### Configure criteria for message max size identification
8585

src/ServiceBus.AttachmentPlugin.Tests/ApprovalFiles/ApiApprovals.AzureStorageAttachmentPlugin.approved.txt

+6-2
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,16 @@ namespace Microsoft.Azure.ServiceBus
33
{
44
public class AzureStorageAttachmentConfiguration
55
{
6-
public const string DefaultContainerName = "attachments";
7-
public const string DefaultMessagePropertyToIdentifyAttachmentBlob = "$attachment.blob";
86
public AzureStorageAttachmentConfiguration(Microsoft.Azure.ServiceBus.IProvideStorageConnectionString connectionStringProvider, string containerName = "attachments", string messagePropertyToIdentifyAttachmentBlob = "$attachment.blob", System.Func<Microsoft.Azure.ServiceBus.Message, bool>? messageMaxSizeReachedCriteria = null) { }
97
public AzureStorageAttachmentConfiguration(string connectionString, string containerName = "attachments", string messagePropertyToIdentifyAttachmentBlob = "$attachment.blob", System.Func<Microsoft.Azure.ServiceBus.Message, bool>? messageMaxSizeReachedCriteria = null) { }
108
public AzureStorageAttachmentConfiguration(Microsoft.Azure.Storage.Auth.StorageCredentials storageCredentials, string blobEndpoint, string containerName = "attachments", string messagePropertyToIdentifyAttachmentBlob = "$attachment.blob", System.Func<Microsoft.Azure.ServiceBus.Message, bool>? messageMaxSizeReachedCriteria = null) { }
119
}
10+
public static class AzureStorageAttachmentConfigurationConstants
11+
{
12+
public const string DefaultContainerName = "attachments";
13+
public const string DefaultMessagePropertyToIdentifyAttachmentBlob = "$attachment.blob";
14+
public const string DefaultMessagePropertyToIdentitySasUri = "$attachment.sas.uri";
15+
}
1216
public static class AzureStorageAttachmentConfigurationExtensions
1317
{
1418
public static Microsoft.Azure.ServiceBus.AzureStorageAttachmentConfiguration OverrideBlobName(this Microsoft.Azure.ServiceBus.AzureStorageAttachmentConfiguration azureStorageAttachmentConfiguration, System.Func<Microsoft.Azure.ServiceBus.Message, string> blobNameResolver) { }

src/ServiceBus.AttachmentPlugin.Tests/AzureStorageAttachmentConfigurationTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public async Task Should_apply_defaults_for_missing_arguments()
1919
Assert.NotEmpty(configuration.ContainerName);
2020
Assert.NotEmpty(configuration.MessagePropertyToIdentifyAttachmentBlob);
2121
Assert.Equal(AzureStorageAttachmentConfigurationExtensions.DefaultSasTokenValidationTime.Days, configuration.BlobSasTokenValidationTime!.Value.Days);
22-
Assert.Equal(AzureStorageAttachmentConfigurationExtensions.DefaultMessagePropertyToIdentitySasUri, configuration.MessagePropertyForBlobSasUri);
22+
Assert.Equal(AzureStorageAttachmentConfigurationConstants.DefaultMessagePropertyToIdentitySasUri, configuration.MessagePropertyForBlobSasUri);
2323
Assert.True(configuration.MessageMaxSizeReachedCriteria(new Message()));
2424
}
2525

src/ServiceBus.AttachmentPlugin.Tests/Snippets.cs

+12
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,18 @@ void Configure_blob_name_override(string connectionString, string queueName, str
8080
#endregion
8181
}
8282

83+
void Configure_blob_sas_uri_override(string storageConnectionString)
84+
{
85+
#region Configure_blob_sas_uri_override
86+
87+
new AzureStorageAttachmentConfiguration(storageConnectionString)
88+
.WithBlobSasUri(
89+
messagePropertyToIdentifySasUri: "mySasUriProperty",
90+
sasTokenValidationTime: TimeSpan.FromHours(12));
91+
92+
#endregion
93+
}
94+
8395
void Configure_body_override(string connectionString, string queueName, string storageConnectionString)
8496
{
8597
#region Configure_body_override

src/ServiceBus.AttachmentPlugin/AzureStorageAttachmentConfiguration.cs

+6-16
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,15 @@
77
/// <summary>Runtime configuration for Azure Storage Attachment plugin.</summary>
88
public class AzureStorageAttachmentConfiguration
99
{
10-
/// <summary>
11-
/// Default storage container name
12-
/// </summary>
13-
public const string DefaultContainerName = "attachments";
14-
15-
/// <summary>
16-
/// Default message user property to use for blob URI
17-
/// </summary>
18-
public const string DefaultMessagePropertyToIdentifyAttachmentBlob = "$attachment.blob";
19-
2010
/// <summary>Constructor to create new configuration object.</summary>
2111
/// <param name="connectionString"></param>
2212
/// <param name="containerName"></param>
2313
/// <param name="messagePropertyToIdentifyAttachmentBlob"></param>
2414
/// <param name="messageMaxSizeReachedCriteria">Default is always use attachments</param>
2515
public AzureStorageAttachmentConfiguration(
2616
string connectionString,
27-
string containerName = DefaultContainerName,
28-
string messagePropertyToIdentifyAttachmentBlob = DefaultMessagePropertyToIdentifyAttachmentBlob,
17+
string containerName = AzureStorageAttachmentConfigurationConstants.DefaultContainerName,
18+
string messagePropertyToIdentifyAttachmentBlob = AzureStorageAttachmentConfigurationConstants.DefaultMessagePropertyToIdentifyAttachmentBlob,
2919
Func<Message, bool>? messageMaxSizeReachedCriteria = default)
3020
: this(new PlainTextConnectionStringProvider(connectionString), containerName, messagePropertyToIdentifyAttachmentBlob, messageMaxSizeReachedCriteria)
3121
{
@@ -41,8 +31,8 @@ public AzureStorageAttachmentConfiguration(
4131
public AzureStorageAttachmentConfiguration(
4232
StorageCredentials storageCredentials,
4333
string blobEndpoint,
44-
string containerName = DefaultContainerName,
45-
string messagePropertyToIdentifyAttachmentBlob = DefaultMessagePropertyToIdentifyAttachmentBlob,
34+
string containerName = AzureStorageAttachmentConfigurationConstants.DefaultContainerName,
35+
string messagePropertyToIdentifyAttachmentBlob = AzureStorageAttachmentConfigurationConstants.DefaultMessagePropertyToIdentifyAttachmentBlob,
4636
Func<Message, bool>? messageMaxSizeReachedCriteria = default)
4737
{
4838
Guard.AgainstNull(nameof(storageCredentials), storageCredentials);
@@ -75,8 +65,8 @@ static Uri EnsureBlobEndpointEndsWithSlash(string blobEndpoint)
7565
/// <param name="messageMaxSizeReachedCriteria">Default is always use attachments</param>
7666
public AzureStorageAttachmentConfiguration(
7767
IProvideStorageConnectionString connectionStringProvider,
78-
string containerName = DefaultContainerName,
79-
string messagePropertyToIdentifyAttachmentBlob = DefaultMessagePropertyToIdentifyAttachmentBlob,
68+
string containerName = AzureStorageAttachmentConfigurationConstants.DefaultContainerName,
69+
string messagePropertyToIdentifyAttachmentBlob = AzureStorageAttachmentConfigurationConstants.DefaultMessagePropertyToIdentifyAttachmentBlob,
8070
Func<Message, bool>? messageMaxSizeReachedCriteria = default)
8171
{
8272
Guard.AgainstNull(nameof(connectionStringProvider), connectionStringProvider);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
namespace Microsoft.Azure.ServiceBus
2+
{
3+
/// <summary>
4+
///
5+
/// </summary>
6+
public static class AzureStorageAttachmentConfigurationConstants
7+
{
8+
/// <summary>
9+
/// Default storage container name
10+
/// </summary>
11+
public const string DefaultContainerName = "attachments";
12+
13+
/// <summary>
14+
/// Default message user property to use for blob URI
15+
/// </summary>
16+
public const string DefaultMessagePropertyToIdentifyAttachmentBlob = "$attachment.blob";
17+
18+
/// <summary>
19+
/// Default message property which contains the SAS URI used to fetch message body from blob.
20+
/// </summary>
21+
public const string DefaultMessagePropertyToIdentitySasUri = "$attachment.sas.uri";
22+
}
23+
}

src/ServiceBus.AttachmentPlugin/AzureStorageAttachmentConfigurationExtensions.cs

+3-4
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,18 @@
77
/// </summary>
88
public static class AzureStorageAttachmentConfigurationExtensions
99
{
10-
internal const string DefaultMessagePropertyToIdentitySasUri = "$attachment.sas.uri";
11-
internal static TimeSpan DefaultSasTokenValidationTime = TimeSpan.FromDays(7);
10+
internal static readonly TimeSpan DefaultSasTokenValidationTime = TimeSpan.FromDays(7);
1211

1312
/// <summary>
1413
/// Adds blob SAS URI configuration.
1514
/// </summary>
1615
/// <param name="azureStorageAttachmentConfiguration"></param>
1716
/// <param name="messagePropertyToIdentifySasUri">The <see cref="Message"/> user property used for blob SAS URI.</param>
18-
/// <param name="sasTokenValidationTime">The time blob SAS URI is valid for.</param>
17+
/// <param name="sasTokenValidationTime">The time blob SAS URI is valid for. Default value is 7 days.</param>
1918
/// <returns></returns>
2019
public static AzureStorageAttachmentConfiguration WithBlobSasUri(
2120
this AzureStorageAttachmentConfiguration azureStorageAttachmentConfiguration,
22-
string messagePropertyToIdentifySasUri = DefaultMessagePropertyToIdentitySasUri,
21+
string messagePropertyToIdentifySasUri = AzureStorageAttachmentConfigurationConstants.DefaultMessagePropertyToIdentitySasUri,
2322
TimeSpan? sasTokenValidationTime = null)
2423
{
2524
if (azureStorageAttachmentConfiguration.UsingSas)

0 commit comments

Comments
 (0)