Skip to content

add user agent to IClientSettings. #45

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions BaseSpace.SDK.Tests/BaseSpace.SDK.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@
<Reference Include="System.Configuration" />
</ItemGroup>
<ItemGroup>
<Compile Include="BaseSpaceClientSettingsTests.cs" />
<Compile Include="Helpers\TestHelpers.cs" />
<Compile Include="Integration\AccessTests.cs" />
<Compile Include="Integration\ApiMetaTests.cs" />
Expand Down
15 changes: 15 additions & 0 deletions BaseSpace.SDK.Tests/BaseSpaceClientSettingsTests.cs
Original file line number Diff line number Diff line change
@@ -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));
}
}
}
23 changes: 21 additions & 2 deletions BaseSpace.SDK/Infrastructure/BaseSpaceClientSettings.cs
Original file line number Diff line number Diff line change
@@ -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";
Expand All @@ -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;
Expand All @@ -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; }
Expand All @@ -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);
}
}
}
5 changes: 5 additions & 0 deletions BaseSpace.SDK/Infrastructure/JsonWebClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,11 @@ private void WebRequestFilter(HttpWebRequest req)
{
settings.Authentication.UpdateHttpHeader(req);
}

if (!string.IsNullOrWhiteSpace(settings.UserAgent))
{
req.UserAgent = settings.UserAgent;
}
}
}
}
2 changes: 2 additions & 0 deletions BaseSpace.SDK/Interfaces/IClientSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,7 @@ public interface IClientSettings
IAuthentication Authentication { get; }

int TimeoutMin { get; }

string UserAgent { get; set; }
}
}