diff --git a/BasicUnitTest/SenderTests.cs b/BasicUnitTest/SenderTests.cs index e824755cf22491380dab5cd161d3f1e15f6e3436..87ba281e807a512331518dc61c1ece74cdcbd89d 100644 --- a/BasicUnitTest/SenderTests.cs +++ b/BasicUnitTest/SenderTests.cs @@ -85,7 +85,7 @@ public class SenderTests { } [Test] - public void VerifyMetaData_MissingLeikaKey_ThorwsAnError() { + public void VerifyMetaData_MissingLeikaKey_ThrowsAnError() { // Arrange var submission = new Submission(); diff --git a/FitConnect/FitConnectClient.cs b/FitConnect/FitConnectClient.cs index 6e348149fbdfb4e664e36734a0fcadafd980a5b7..91f2fe1a8c06dd41ff70f5dc857985aa57c0577c 100644 --- a/FitConnect/FitConnectClient.cs +++ b/FitConnect/FitConnectClient.cs @@ -7,6 +7,8 @@ using FitConnect.Services.Interfaces; using FitConnect.Services.Models.v1.Submission; using Microsoft.Extensions.Logging; using Microsoft.IdentityModel.Tokens; +using Newtonsoft.Json.Schema; +using ValidationError = NJsonSchema.Validation.ValidationError; namespace FitConnect; @@ -18,6 +20,15 @@ public abstract class FitConnectClient { protected readonly bool VerifiedKeysAreMandatory; + /// <summary> + /// Validates <paramref name="dataString"/> against <paramref name="schemaString"/> and returns the validation errors if any appear + /// </summary> + public static async Task<ICollection<ValidationError>> ValidateSchemaAsync( + string dataString, string schemaString) { + var schema = await NJsonSchema.JsonSchema.FromJsonAsync(schemaString); + return schema.Validate(dataString); + } + protected FitConnectClient(FitConnectEnvironment environment, string clientId, string clientSecret, ILogger? logger = null, diff --git a/FitConnect/Sender.cs b/FitConnect/Sender.cs index cc30c2ab888c13bd77729926eafc80ed2f5556e2..f57a1791bfb03c521bd8a5fba2f48f837cc5b77f 100644 --- a/FitConnect/Sender.cs +++ b/FitConnect/Sender.cs @@ -197,7 +197,7 @@ public class Sender : FitConnectClient, ISender, ISenderWithDestination, /// </summary> /// <param name="submission"></param> /// <returns></returns> - public static string CreateMetadata(Submission submission) { + internal static string CreateMetadata(Submission submission) { var data = new Data { Hash = new DataHash { Type = "sha512", diff --git a/structure.md b/structure.md index 7449047f09344202257861f9c18b288de0a57562..e951b473d22abffd9b71576670f012e83171c272 100644 --- a/structure.md +++ b/structure.md @@ -16,10 +16,10 @@ RouteService } - FitConnectClient ..> SubmissionSender : public - FitConnectClient ..> SubmissionSubscriber : public - SubmissionSender --|> FunctionalBaseClass - SubmissionSubscriber --|> FunctionalBaseClass + FitConnectClient ..> Sender : public + FitConnectClient ..> Subscriber : public + Sender --|> FunctionalBaseClass + Subscriber --|> FunctionalBaseClass FunctionalBaseClass ..> FitConnectApiService : protected FitConnectApiService ..> RouteService : public