From b621c175963c1ef4447c5e16bfa818ca81b70db6 Mon Sep 17 00:00:00 2001 From: Klaus Fischer <klaus.fischer@eloware.com> Date: Tue, 7 Jun 2022 09:34:04 +0200 Subject: [PATCH] Added scope to OAuth token --- E2ETests/SenderTest.cs | 9 +++++++++ FitConnect/FunctionalBaseClass.cs | 29 +++++++++++++++++++++++------ FitConnect/Sender.cs | 4 ++++ 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/E2ETests/SenderTest.cs b/E2ETests/SenderTest.cs index 4482f720..67cbbee6 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 9b7ba4c6..b671ccc4 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 365bc289..258746d3 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 -- GitLab