From cb8fda0c03e6cf1ef1ea63c73dc47693a2a345e0 Mon Sep 17 00:00:00 2001 From: Martin Vogel <martin.vogel@sinc.de> Date: Thu, 16 Jun 2022 10:26:01 +0200 Subject: [PATCH] #414 Add SET --- .../model/event/SecurityEventToken.java | 4 +++ .../fitko/fitconnect/api/services/Sender.java | 7 +++++- .../fitconnect/api/services/Subscriber.java | 20 +++++++++++++++ .../java/de/fitko/fitconnect/TestRunner.java | 6 +++-- .../fitconnect/cmd/CommandLineRunner.java | 25 ++++++++++--------- .../fitconnect/dependency/SdkModule.java | 4 +-- .../fitconnect/impl/SubmissionSubscriber.java | 12 +++++++++ .../MetadataSubmissionValidator.java | 1 + 8 files changed, 62 insertions(+), 17 deletions(-) create mode 100644 api/src/main/java/de/fitko/fitconnect/api/domain/model/event/SecurityEventToken.java diff --git a/api/src/main/java/de/fitko/fitconnect/api/domain/model/event/SecurityEventToken.java b/api/src/main/java/de/fitko/fitconnect/api/domain/model/event/SecurityEventToken.java new file mode 100644 index 000000000..9104fd7c5 --- /dev/null +++ b/api/src/main/java/de/fitko/fitconnect/api/domain/model/event/SecurityEventToken.java @@ -0,0 +1,4 @@ +package de.fitko.fitconnect.api.domain.model.event; + +public class SecurityEventToken { +} diff --git a/api/src/main/java/de/fitko/fitconnect/api/services/Sender.java b/api/src/main/java/de/fitko/fitconnect/api/services/Sender.java index 3300ea0fe..8caa21758 100644 --- a/api/src/main/java/de/fitko/fitconnect/api/services/Sender.java +++ b/api/src/main/java/de/fitko/fitconnect/api/services/Sender.java @@ -58,7 +58,7 @@ public interface Sender { Optional<OAuthToken> retrieveOAuthToken(final String clientId, final String clientSecret, final String... scope); /** - * Creates a {@link Metadata} object that contains {@link Data}, {@link Attachment} and their hashes so a subscriber + * Creates and uploads a {@link Metadata} object that contains {@link Data}, {@link Attachment} and their hashes so a subscriber * can verify the integrity. * * @param data {@link Data} object of the json or xml payload @@ -67,5 +67,10 @@ public interface Sender { */ Optional<Metadata> createMetadata(final Data data, final List<Attachment> attachments); + /** + * + * @param submission + * @return + */ Submission sendSubmission(Submission submission); } diff --git a/api/src/main/java/de/fitko/fitconnect/api/services/Subscriber.java b/api/src/main/java/de/fitko/fitconnect/api/services/Subscriber.java index 2b966f8c5..2f8051ee8 100644 --- a/api/src/main/java/de/fitko/fitconnect/api/services/Subscriber.java +++ b/api/src/main/java/de/fitko/fitconnect/api/services/Subscriber.java @@ -5,6 +5,8 @@ import de.fitko.fitconnect.api.domain.auth.OAuthToken; import de.fitko.fitconnect.api.domain.model.metadata.Metadata; import de.fitko.fitconnect.api.domain.model.metadata.attachment.Attachment; import de.fitko.fitconnect.api.domain.model.metadata.data.Data; +import de.fitko.fitconnect.api.domain.model.event.SecurityEventToken; +import de.fitko.fitconnect.api.domain.model.submission.Submission; import de.fitko.fitconnect.api.domain.validation.ValidationResult; import java.util.Optional; @@ -61,4 +63,22 @@ public interface Subscriber { * @return a {@link ValidationResult}, that contains errors if the hash-values of the transmitted data are not valid */ ValidationResult validateMetadataHashValues(final Metadata metadata); + + /** + * + * @param submissionId + * @param attachmentId + * @return + */ + Optional<Submission> getSubmission(String submissionId, String attachmentId); + + /** + * + * @param data + * @param attachment + * @param privateKey + * @return + */ + Optional<SecurityEventToken> createSecurityEventToken(Data data, Attachment attachment, RSAKey privateKey); + } diff --git a/client/src/main/java/de/fitko/fitconnect/TestRunner.java b/client/src/main/java/de/fitko/fitconnect/TestRunner.java index afdc96bbd..830e20ddd 100644 --- a/client/src/main/java/de/fitko/fitconnect/TestRunner.java +++ b/client/src/main/java/de/fitko/fitconnect/TestRunner.java @@ -1,10 +1,10 @@ package de.fitko.fitconnect; -import de.fitko.fitconnect.client.SdkClientFactory; -import de.fitko.fitconnect.client.SenderClient; import de.fitko.fitconnect.api.domain.model.metadata.Metadata; import de.fitko.fitconnect.api.domain.model.metadata.data.Data; import de.fitko.fitconnect.api.domain.model.submission.Submission; +import de.fitko.fitconnect.client.SdkClientFactory; +import de.fitko.fitconnect.client.SenderClient; import java.util.Collections; @@ -23,5 +23,7 @@ public class TestRunner { .createSubmission(Submission.builder().build()) .uploadAttachments(Collections.emptyList()) .sendSubmission(Metadata.builder().build(), Data.builder().build()); + } + } diff --git a/client/src/main/java/de/fitko/fitconnect/cmd/CommandLineRunner.java b/client/src/main/java/de/fitko/fitconnect/cmd/CommandLineRunner.java index 44d62b447..43c473542 100644 --- a/client/src/main/java/de/fitko/fitconnect/cmd/CommandLineRunner.java +++ b/client/src/main/java/de/fitko/fitconnect/cmd/CommandLineRunner.java @@ -1,29 +1,30 @@ package de.fitko.fitconnect.cmd; import com.beust.jcommander.JCommander; -import de.fitko.fitconnect.api.domain.model.metadata.Metadata; -import de.fitko.fitconnect.api.domain.model.metadata.data.Data; -import de.fitko.fitconnect.api.domain.model.submission.Submission; import de.fitko.fitconnect.client.SdkClientFactory; import de.fitko.fitconnect.client.SenderClient; -import java.util.Collections; - public class CommandLineRunner { public static void main(String[] args) { + final CommandLineArgs cmdArgs = new CommandLineArgs(); + JCommander build = JCommander.newBuilder() + .addObject(cmdArgs) + .build(); + + build.parse(args); + final SenderClient senderClient = SdkClientFactory.senderClient(); - var clientId = "781f6213-0f0f-4a79-9372-e7187ffda98b"; - var secret = "PnzR8Vbmhpv_VwTkT34wponqXWK8WBm-LADlryYdV4o"; + var clientId = cmdArgs.clientId; + var secret = cmdArgs.secret; // sample high -level- api calls to send a submission - senderClient.authenticate(clientId,secret) - .printToken() - .createSubmission(Submission.builder().build()) - .uploadAttachments(Collections.emptyList()) - .sendSubmission(Metadata.builder().build(), Data.builder().build()); + senderClient + .authenticate(clientId,secret) + .printToken(); + } } diff --git a/dependency/src/main/java/de/fitko/fitconnect/dependency/SdkModule.java b/dependency/src/main/java/de/fitko/fitconnect/dependency/SdkModule.java index d4a2e265a..114ec6739 100644 --- a/dependency/src/main/java/de/fitko/fitconnect/dependency/SdkModule.java +++ b/dependency/src/main/java/de/fitko/fitconnect/dependency/SdkModule.java @@ -17,7 +17,7 @@ import de.fitko.fitconnect.impl.SubmissionSubscriber; import de.fitko.fitconnect.impl.auth.DefaultOAuthService; import de.fitko.fitconnect.impl.crypto.JWECryptoService; import de.fitko.fitconnect.impl.http.ProxyConfig; -import de.fitko.fitconnect.impl.metadata.MetadataGenerationService; +import de.fitko.fitconnect.impl.metadata.MetadataUploadService; import de.fitko.fitconnect.impl.validation.KeyValidator; import de.fitko.fitconnect.impl.validation.MetadataSubmissionValidator; import org.slf4j.Logger; @@ -42,7 +42,7 @@ public class SdkModule extends AbstractModule { bind(CryptoService.class).to(JWECryptoService.class); bind(CertificateValidator.class).to(KeyValidator.class); bind(MetadataValidator.class).to(MetadataSubmissionValidator.class); - bind(MetadataService.class).to(MetadataGenerationService.class); + bind(MetadataService.class).to(MetadataUploadService.class); bind(Sender.class).to(SubmissionSender.class); bind(Subscriber.class).to(SubmissionSubscriber.class); diff --git a/impl/src/main/java/de/fitko/fitconnect/impl/SubmissionSubscriber.java b/impl/src/main/java/de/fitko/fitconnect/impl/SubmissionSubscriber.java index f3969aaff..654082bd4 100644 --- a/impl/src/main/java/de/fitko/fitconnect/impl/SubmissionSubscriber.java +++ b/impl/src/main/java/de/fitko/fitconnect/impl/SubmissionSubscriber.java @@ -6,6 +6,8 @@ import de.fitko.fitconnect.api.domain.auth.OAuthToken; import de.fitko.fitconnect.api.domain.model.metadata.Metadata; import de.fitko.fitconnect.api.domain.model.metadata.attachment.Attachment; import de.fitko.fitconnect.api.domain.model.metadata.data.Data; +import de.fitko.fitconnect.api.domain.model.event.SecurityEventToken; +import de.fitko.fitconnect.api.domain.model.submission.Submission; import de.fitko.fitconnect.api.domain.validation.ValidationResult; import de.fitko.fitconnect.api.exceptions.AuthenticationException; import de.fitko.fitconnect.api.services.Subscriber; @@ -64,4 +66,14 @@ public class SubmissionSubscriber implements Subscriber { public ValidationResult validateMetadataHashValues(Metadata metadata) { return metadataValidator.validateMetadataHashValues(metadata); } + + @Override + public Optional<Submission> getSubmission(String submissionId, String attachmentId) { + throw new UnsupportedOperationException("not yet implemented"); + } + + @Override + public Optional<SecurityEventToken> createSecurityEventToken(Data data, Attachment attachment, RSAKey privateKey) { + throw new UnsupportedOperationException("not yet implemented"); + } } diff --git a/impl/src/main/java/de/fitko/fitconnect/impl/validation/MetadataSubmissionValidator.java b/impl/src/main/java/de/fitko/fitconnect/impl/validation/MetadataSubmissionValidator.java index d80fa02a6..f4bfcaa5b 100644 --- a/impl/src/main/java/de/fitko/fitconnect/impl/validation/MetadataSubmissionValidator.java +++ b/impl/src/main/java/de/fitko/fitconnect/impl/validation/MetadataSubmissionValidator.java @@ -35,6 +35,7 @@ public class MetadataSubmissionValidator implements MetadataValidator { public ValidationResult validateMetadataHashValues(Metadata metadata) { return ValidationResult.ok(); } + private JSONObject toJsonObject(Metadata metadata) throws JsonProcessingException { return new JSONObject(new JSONTokener(mapper.writeValueAsString(metadata))); } -- GitLab