diff --git a/E2ETests/SenderTest.cs b/E2ETests/SenderTest.cs index 4482f720dc4e4f63a017ee98a5d7053030aee1c8..67cbbee61de1436c26b8b52c47fd181c9290369c 100644 --- a/E2ETests/SenderTest.cs +++ b/E2ETests/SenderTest.cs @@ -54,5 +54,14 @@ public class SenderTest { var token = _sender.GetTokenAsync(_clientId, _clientSecret).Result; token.Should().NotBeNull(); token.ExpiresIn.Should().Be(1800); + token.Scope.Should().Be("send:region:DE"); + } + + [Test] + public void GetAccessTokenWithScope() { + var token = _sender.GetTokenAsync(_clientId, _clientSecret, "send:region:DE01010").Result; + token.Should().NotBeNull(); + token.ExpiresIn.Should().Be(1800); + token.Scope.Should().Be("send:region:DE01010"); } } diff --git a/FitConnect/FunctionalBaseClass.cs b/FitConnect/FunctionalBaseClass.cs index 9b7ba4c6577ddb267233644f574f3717bade274e..b671ccc4d9b5ad51ed7ac7a29dfcd9bf54aebf6a 100644 --- a/FitConnect/FunctionalBaseClass.cs +++ b/FitConnect/FunctionalBaseClass.cs @@ -87,15 +87,32 @@ public class FunctionalBaseClass { } - public async Task<OAuthAccessToken?> GetTokenAsync(string clientId, string clientSecret) { + /// <summary> + /// Requesting an OAuth token from the FitConnect API. + /// + /// You can get the Client ID and Client Secret from the FitConnect Self Service portal + /// under https://portal.auth-testing.fit-connect.fitko.dev + /// </summary> + /// <param name="clientId">Your client Id</param> + /// <param name="clientSecret">Your client Secret</param> + /// <param name="scope">Scope if needed</param> + /// <returns></returns> + public async Task<OAuthAccessToken?> GetTokenAsync(string clientId, string clientSecret, + string? scope = null) { var client = new HttpClient(); client.DefaultRequestHeaders.Accept.Add( MediaTypeWithQualityHeaderValue.Parse("application/json")); - var content = new FormUrlEncodedContent(new[] { - new KeyValuePair<string, string>("grant_type", "client_credentials"), - new KeyValuePair<string, string>("client_id", clientId), - new KeyValuePair<string, string>("client_secret", clientSecret) - }); + + var requestContent = new Dictionary<string, string> { + { "grant_type", "client_credentials" }, + { "client_id", clientId }, + { "client_secret", clientSecret } + }; + + if (scope != null) + requestContent["scope"] = scope; + + var content = new FormUrlEncodedContent(requestContent); var request = new HttpRequestMessage(HttpMethod.Post, Endpoints.TokenUrl) { Content = content, diff --git a/FitConnect/Sender.cs b/FitConnect/Sender.cs index 365bc2899fb05721d40a2500e10bb1ff6d64d687..258746d32b02dd873f986768f7b502ce67ee769b 100644 --- a/FitConnect/Sender.cs +++ b/FitConnect/Sender.cs @@ -5,4 +5,8 @@ namespace FitConnect; public class Sender : FunctionalBaseClass { public Sender(ILogger? logger, FitConnectEndpoints endpoints) : base(logger,endpoints) { } + + internal async Task EncryptData() { + + } } \ No newline at end of file