diff --git a/BaseSpace.SDK.Tests/BaseSpace.SDK.Tests.csproj b/BaseSpace.SDK.Tests/BaseSpace.SDK.Tests.csproj
index 247d7d1..02b4b88 100644
--- a/BaseSpace.SDK.Tests/BaseSpace.SDK.Tests.csproj
+++ b/BaseSpace.SDK.Tests/BaseSpace.SDK.Tests.csproj
@@ -71,6 +71,7 @@
+
diff --git a/BaseSpace.SDK.Tests/BaseSpaceClientSettingsTests.cs b/BaseSpace.SDK.Tests/BaseSpaceClientSettingsTests.cs
new file mode 100644
index 0000000..c1fd45e
--- /dev/null
+++ b/BaseSpace.SDK.Tests/BaseSpaceClientSettingsTests.cs
@@ -0,0 +1,15 @@
+using Xunit;
+
+namespace Illumina.BaseSpace.SDK.Tests
+{
+ public class BaseSpaceClientSettingsTests
+ {
+ [Fact]
+ public void CanGetDefaultUserAgent()
+ {
+ var settings = new BaseSpaceClientSettings();
+
+ Assert.True(!string.IsNullOrWhiteSpace(settings.UserAgent));
+ }
+ }
+}
diff --git a/BaseSpace.SDK/Infrastructure/BaseSpaceClientSettings.cs b/BaseSpace.SDK/Infrastructure/BaseSpaceClientSettings.cs
index 9489b5e..48f6b69 100644
--- a/BaseSpace.SDK/Infrastructure/BaseSpaceClientSettings.cs
+++ b/BaseSpace.SDK/Infrastructure/BaseSpaceClientSettings.cs
@@ -1,7 +1,12 @@
-namespace Illumina.BaseSpace.SDK
+using System.Diagnostics;
+using System.Reflection;
+
+namespace Illumina.BaseSpace.SDK
{
public class BaseSpaceClientSettings : IClientSettings
{
+ private static readonly string SDK_VERSION;
+
public const uint DEFAULT_RETRY_ATTEMPTS = 6;
public const string DEFAULT_WEBSITE = "https://basespace.illumina.com";
@@ -17,6 +22,13 @@ public class BaseSpaceClientSettings : IClientSettings
public const uint DEFAULT_MULTIPART_SIZE_THRESHOLD = 25*1024*1024; //in bytes
+ static BaseSpaceClientSettings()
+ {
+ var assembly = Assembly.GetExecutingAssembly();
+ var fileVersionInfo = FileVersionInfo.GetVersionInfo(assembly.Location);
+ SDK_VERSION = fileVersionInfo.ProductVersion;
+ }
+
public BaseSpaceClientSettings()
{
RetryAttempts = DEFAULT_RETRY_ATTEMPTS;
@@ -26,8 +38,8 @@ public BaseSpaceClientSettings()
Version = DEFAULT_VERSION;
FileUploadMultipartSizeThreshold = DEFAULT_MULTIPART_SIZE_THRESHOLD;
FileUploadMultipartChunkSize = DEFAULT_UPLOAD_MULTIPART_SIZE;
-
FileDownloadMultipartSizeThreshold = DEFAULT_DOWNLOAD_MULTIPART_SIZE;
+ UserAgent = GetDefaultUserAgent();
}
public uint RetryAttempts { get; set; }
@@ -49,5 +61,12 @@ public BaseSpaceClientSettings()
public IAuthentication Authentication { get; set; }
public int TimeoutMin { get; set; }
+
+ public string UserAgent { get; set; }
+
+ private static string GetDefaultUserAgent()
+ {
+ return string.Format("Illumina BaseSpace C# SDK {0}", SDK_VERSION);
+ }
}
}
diff --git a/BaseSpace.SDK/Infrastructure/JsonWebClient.cs b/BaseSpace.SDK/Infrastructure/JsonWebClient.cs
index 440c5f4..19c9176 100644
--- a/BaseSpace.SDK/Infrastructure/JsonWebClient.cs
+++ b/BaseSpace.SDK/Infrastructure/JsonWebClient.cs
@@ -150,6 +150,11 @@ private void WebRequestFilter(HttpWebRequest req)
{
settings.Authentication.UpdateHttpHeader(req);
}
+
+ if (!string.IsNullOrWhiteSpace(settings.UserAgent))
+ {
+ req.UserAgent = settings.UserAgent;
+ }
}
}
}
\ No newline at end of file
diff --git a/BaseSpace.SDK/Interfaces/IClientSettings.cs b/BaseSpace.SDK/Interfaces/IClientSettings.cs
index 734a168..444c732 100644
--- a/BaseSpace.SDK/Interfaces/IClientSettings.cs
+++ b/BaseSpace.SDK/Interfaces/IClientSettings.cs
@@ -20,5 +20,7 @@ public interface IClientSettings
IAuthentication Authentication { get; }
int TimeoutMin { get; }
+
+ string UserAgent { get; set; }
}
}