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 0000000000000000000000000000000000000000..9104fd7c5db83edbda3bda797c820c819690058e --- /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 3300ea0fed5f3ac4a96561b57ebb0b38a64c44a6..8caa2175892da068c2f4f2c985ce94ffbd38d0b3 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 2b966f8c5f31d25e90e55032ae3918a9b2b16e56..2f8051ee8bdc0f9d6c0bf3b65730c8af7415a186 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 afdc96bbd97ddcdd2aa86818df56881f6810d31e..830e20dddc41a1aa93249be6647ef1d903ff45e1 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 44d62b447b1e219132c80244fa319d2d0412a173..43c473542505c289e0cd8ff73fa80634b347936b 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 d4a2e265a1950059d68e6cb0a730c16afa43cf64..114ec67390fa77d5db10a79322581fc65c61e34a 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 f3969aaff95ced60f8c93baf9a5085a0ec49905b..654082bd467fcea7bd6fc6f1d1bd27841f49ab3b 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 d80fa02a66744054c9f7bb068997ce49629dbcdc..f4bfcaa5b4b481fcaa459acf016da478da0efc70 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))); }