Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • fit-connect/sdk-java
1 result
Show changes
Commits on Source (6)
Showing
with 135 additions and 96 deletions
......@@ -512,7 +512,6 @@ var submissionBaseUrl = "https://submission-api-testing.fit-connect.fitko.dev";
```
## Roadmap
- [ ] Add auto-reject on technical errors
- [ ] Maven central release of 1.0.0-beta
......
......@@ -17,13 +17,21 @@ import java.util.stream.Collectors;
@AllArgsConstructor
public class ApplicationConfig {
@Builder.Default
public static final String AUTH_TAG_SPLIT_TOKEN = "\\.";
@Builder.Default
private String httpProxyHost = "";
@Builder.Default
private Integer httpProxyPort = 0;
@Builder.Default
private Integer requestTimeoutInSeconds = 30;
@Builder.Default
private boolean enableAutoReject = true;
@Builder.Default
private URI setSchemaWriteVersion = SchemaConfig.SET_V_1_0_1.getSchemaUri();
......@@ -120,5 +128,9 @@ public class ApplicationConfig {
.map(EnvironmentName::getName)
.collect(Collectors.joining(" | "));
}
public boolean isProxySet() {
return (httpProxyPort != null && httpProxyPort > 0) && (httpProxyHost != null || !httpProxyHost.isEmpty());
}
}
......@@ -9,5 +9,7 @@ public final class EventClaimFields {
public static final String CLAIM_SCHEMA = "$schema";
public static final String CLAIM_TXN = "txn";
public static final String CLAIM_SUB = "sub";
public static final String AUTHENTICATION_TAGS = "authenticationTags";
public static final String PROBLEMS = "problems";
public static final String HEADER_TYPE = "secevent+jwt";
}
......@@ -7,7 +7,9 @@ import java.util.UUID;
@Data
public class AuthenticationTags {
private String metadata;
private String data;
private Map<UUID, String> attachments;
}
package dev.fitko.fitconnect.api.domain.model.event.problems;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
......@@ -12,11 +13,19 @@ import lombok.Data;
@Data
@AllArgsConstructor
public class Problem {
@JsonIgnore
public static final String SCHEMA_URL = "https://schema.fitko.de/fit-connect/events/problems/";
@JsonProperty("type")
private final String type;
@JsonProperty("title")
private final String title;
@JsonProperty("detail")
private final String detail;
@JsonProperty("instance")
private final String instance;
}
......@@ -2,16 +2,18 @@ package dev.fitko.fitconnect.api.domain.model.event.problems.attachment;
import dev.fitko.fitconnect.api.domain.model.event.problems.Problem;
import java.util.UUID;
import static java.lang.String.format;
public class AttachmentEncryptionIssue extends Problem {
public final class AttachmentEncryptionIssue extends Problem {
private static final String type = SCHEMA_URL + "encryption-issue";
private static final String title = "Entschlüsselungs-Fehler";
private static final String detail = "Die Anlage %s konnte nicht entschlüsselt werden.";
private static final String instance = "attachment:%s";
private static final String TYPE = SCHEMA_URL + "encryption-issue";
private static final String TITLE = "Decryption failure";
private static final String DETAIL = "Decrypting attachment %s failed.";
private static final String INSTANCE = "attachment:%s";
public AttachmentEncryptionIssue(final String attachmentId) {
super(type, title, format(detail, attachmentId), format(instance, attachmentId));
public AttachmentEncryptionIssue(final UUID attachmentId) {
super(TYPE, TITLE, format(DETAIL, attachmentId), format(INSTANCE, attachmentId));
}
}
......@@ -4,14 +4,18 @@ import dev.fitko.fitconnect.api.domain.model.event.problems.Problem;
import static java.lang.String.format;
public class AttachmentEncryptionKeyIssue extends Problem {
public final class AttachmentEncryptionKeyIssue extends Problem {
private static final String type = SCHEMA_URL + "encryption-issue";
private static final String title = "Entschlüsselungs-Fehler";
private static final String detail = "Der Schlüssel %s ist nicht der zu diesem Zweck vorgesehene Schlüssel.";
private static final String instance = "attachment:%s";
private static final String TYPE = SCHEMA_URL + "encryption-issue";
private static final String TITLE = "Decryption failure";
private static final String DETAIL = "The key %s is not the key intended for this purpose.";
private static final String INSTANCE = "attachment:%s";
public AttachmentEncryptionKeyIssue(final String keyId) {
super(type, title, format(detail, keyId), format(instance, keyId));
super(TYPE, TITLE, format(DETAIL, keyId), format(INSTANCE, keyId));
}
public static Problem getWithAttachmentId(final String keyId) {
return new AttachmentEncryptionKeyIssue(keyId);
}
}
......@@ -2,16 +2,18 @@ package dev.fitko.fitconnect.api.domain.model.event.problems.attachment;
import dev.fitko.fitconnect.api.domain.model.event.problems.Problem;
import java.util.UUID;
import static java.lang.String.format;
public class AttachmentHashMismatch extends Problem {
public final class AttachmentHashMismatch extends Problem {
private static final String type = SCHEMA_URL + "hash-mismatch";
private static final String title = "Prüfsumme stimmt nicht";
private static final String detail = "Der Hash der Anlage %s stimmt nicht.";
private static final String instance = "attachment:%s";
private static final String TYPE = SCHEMA_URL + "hash-mismatch";
private static final String TITLE = "Checksum does not match";
private static final String DETAIL = "Attachment %s hash value is wrong.";
private static final String INSTANCE = "attachment:%s";
public AttachmentHashMismatch(final String attachmentId) {
super(type, title, format(detail, attachmentId), format(instance, attachmentId));
public AttachmentHashMismatch(final UUID attachmentId) {
super(TYPE, TITLE, format(DETAIL, attachmentId), format(INSTANCE, attachmentId));
}
}
......@@ -2,16 +2,18 @@ package dev.fitko.fitconnect.api.domain.model.event.problems.attachment;
import dev.fitko.fitconnect.api.domain.model.event.problems.Problem;
import java.util.UUID;
import static java.lang.String.format;
public class IncorrectAttachmentAuthenticationTag extends Problem {
public final class IncorrectAttachmentAuthenticationTag extends Problem {
private static final String type = SCHEMA_URL + "incorrect-authentication-tag";
private static final String title = "Authentication-Tag ungültig";
private static final String detail = "Das Authentication-Tag der Anlage %s ist ungültig.";
private static final String instance = "attachment:%s";
private static final String TYPE = SCHEMA_URL + "incorrect-authentication-tag";
private static final String TITLE = "Authentication tag is invalid";
private static final String DETAIL = "The authentication tag for the attachment %s is invalid.";
private static final String INSTANCE = "attachment:%s";
public IncorrectAttachmentAuthenticationTag(final String attachmentId) {
super(type, title, format(detail, attachmentId), format(instance, attachmentId));
public IncorrectAttachmentAuthenticationTag(final UUID attachmentId) {
super(TYPE, TITLE, format(DETAIL, attachmentId), format(INSTANCE, attachmentId));
}
}
......@@ -2,16 +2,19 @@ package dev.fitko.fitconnect.api.domain.model.event.problems.attachment;
import dev.fitko.fitconnect.api.domain.model.event.problems.Problem;
import java.util.UUID;
import static java.lang.String.format;
public class InvalidAttachmentContent extends Problem {
public final class InvalidAttachmentContent extends Problem {
private static final String type = SCHEMA_URL + "invalid-content";
private static final String title = "Unzulässiger Inhalt";
private static final String detail = "Der Inhalt der Anlage %s ist nicht zulässig.";
private static final String instance = "attachment:%s";
private static final String TYPE = SCHEMA_URL + "invalid-content";
private static final String TITLE = "Invalid content";
private static final String DETAIL = "The content of the attachment %s is not allowed.";
private static final String INSTANCE = "attachment:%s";
public InvalidAttachmentContent(final String attachmentId) {
super(type, title, format(detail, attachmentId), format(instance, attachmentId));
public InvalidAttachmentContent(final UUID attachmentId) {
super(TYPE, TITLE, format(DETAIL, attachmentId), format(INSTANCE, attachmentId));
}
}
......@@ -2,15 +2,17 @@ package dev.fitko.fitconnect.api.domain.model.event.problems.attachment;
import dev.fitko.fitconnect.api.domain.model.event.problems.Problem;
import java.util.UUID;
import static java.lang.String.format;
public class MissingAttachment extends Problem {
private static final String type = SCHEMA_URL + "missing-attachment";
private static final String title = "Anlage fehlt";
private static final String detail = "Die Anlage %s konnte nicht geladen werden.";
private static final String instance = "attachment:%s";
public final class MissingAttachment extends Problem {
private static final String TYPE = SCHEMA_URL + "missing-attachment";
private static final String TITLE = "List of attachments is invalid";
private static final String DETAIL = "Unable to load attachment %s.";
private static final String INSTANCE = "attachment:%s";
public MissingAttachment(final String attachmentId){
super(type, title, format(detail, attachmentId), format(instance, attachmentId));
public MissingAttachment(final UUID attachmentId){
super(TYPE, TITLE, format(DETAIL, attachmentId), format(INSTANCE, attachmentId));
}
}
......@@ -2,14 +2,14 @@ package dev.fitko.fitconnect.api.domain.model.event.problems.data;
import dev.fitko.fitconnect.api.domain.model.event.problems.Problem;
public class DataEncryptionIssue extends Problem {
public final class DataEncryptionIssue extends Problem {
private static final String type = SCHEMA_URL + "encryption-issue";
private static final String title = "Entschlüsselungs-Fehler";
private static final String detail = "Der Fachdatensatz konnte nicht entschlüsselt werden.";
private static final String instance = "data";
private static final String TYPE = SCHEMA_URL + "encryption-issue";
private static final String TITLE = "Decryption failure";
private static final String DETAIL = "Decrypting submission data failed.";
private static final String INSTANCE = "data";
public DataEncryptionIssue() {
super(type, title, detail, instance);
super(TYPE, TITLE, DETAIL, INSTANCE);
}
}
......@@ -4,14 +4,14 @@ import dev.fitko.fitconnect.api.domain.model.event.problems.Problem;
import static java.lang.String.format;
public class DataEncryptionKeyIssue extends Problem {
public final class DataEncryptionKeyIssue extends Problem {
private static final String type = SCHEMA_URL + "encryption-issue";
private static final String title = "Entschlüsselungs-Fehler";
private static final String detail = "Der Schlüssel %s ist nicht der zu diesem Zweck vorgesehene Schlüssel.";
private static final String instance = "data";
private static final String TYPE = SCHEMA_URL + "encryption-issue";
private static final String TITLE = "Decryption failure";
private static final String DETAIL = "The key %s is not the key intended for this purpose.";
private static final String INSTANCE = "data";
public DataEncryptionKeyIssue(final String keyId) {
super(type, title, format(detail, keyId), instance);
super(TYPE, TITLE, format(DETAIL, keyId), INSTANCE);
}
}
......@@ -2,14 +2,14 @@ package dev.fitko.fitconnect.api.domain.model.event.problems.data;
import dev.fitko.fitconnect.api.domain.model.event.problems.Problem;
public class DataHashMismatch extends Problem {
public final class DataHashMismatch extends Problem {
private static final String type = SCHEMA_URL + "hash-mismatch";
private static final String title = "Prüfsumme stimmt nicht";
private static final String detail = "Die Prüfsumme des Fachdatensatzes stimmt nicht.";
private static final String instance = "data";
private static final String TYPE = SCHEMA_URL + "hash-mismatch";
private static final String TITLE = "Checksum does not match";
private static final String DETAIL = "Submission data checksum wrong.";
private static final String INSTANCE = "data";
public DataHashMismatch() {
super(type, title, detail, instance);
super(TYPE, TITLE, DETAIL, INSTANCE);
}
}
......@@ -2,14 +2,14 @@ package dev.fitko.fitconnect.api.domain.model.event.problems.data;
import dev.fitko.fitconnect.api.domain.model.event.problems.Problem;
public class DataJsonSyntaxViolation extends Problem {
public final class DataJsonSyntaxViolation extends Problem {
private static final String type = SCHEMA_URL + "syntax-violation";
private static final String title = "Syntax-Fehler";
private static final String detail = "Der Fachdatensatz ist kein valides JSON.";
private static final String instance = "data";
private static final String TYPE = SCHEMA_URL + "syntax-violation";
private static final String TITLE = "Syntax violation";
private static final String DETAIL = "Submission data is no valid JSON.";
private static final String INSTANCE = "data";
public DataJsonSyntaxViolation() {
super(type, title, detail, instance);
super(TYPE, TITLE, DETAIL, INSTANCE);
}
}
......@@ -2,14 +2,14 @@ package dev.fitko.fitconnect.api.domain.model.event.problems.data;
import dev.fitko.fitconnect.api.domain.model.event.problems.Problem;
public class DataSchemaViolation extends Problem {
public final class DataSchemaViolation extends Problem {
private static final String type = SCHEMA_URL + "schema-violation";
private static final String title = "Schema-Fehler";
private static final String detail = "Der Fachdatensatz ist nicht schema-valide.";
private static final String instance = "data";
private static final String TYPE = SCHEMA_URL + "schema-violation";
private static final String TITLE = "Schema violation";
private static final String DETAIL = "Submission data does not comply to schema.";
private static final String INSTANCE = "data";
public DataSchemaViolation() {
super(type, title, detail, instance);
super(TYPE, TITLE, DETAIL, INSTANCE);
}
}
......@@ -2,14 +2,14 @@ package dev.fitko.fitconnect.api.domain.model.event.problems.data;
import dev.fitko.fitconnect.api.domain.model.event.problems.Problem;
public class DataXmlSyntaxViolation extends Problem {
public final class DataXmlSyntaxViolation extends Problem {
private static final String type = SCHEMA_URL + "syntax-violation";
private static final String title = "Syntax-Fehler";
private static final String detail = "Der Fachdatensatz ist kein valides XML.";
private static final String instance = "data";
private static final String TYPE = SCHEMA_URL + "syntax-violation";
private static final String TITLE = "Syntax violation";
private static final String DETAIL = "Submission data is no valid XML.";
private static final String INSTANCE = "data";
public DataXmlSyntaxViolation() {
super(type, title, detail, instance);
super(TYPE, TITLE, DETAIL, INSTANCE);
}
}
......@@ -2,14 +2,14 @@ package dev.fitko.fitconnect.api.domain.model.event.problems.data;
import dev.fitko.fitconnect.api.domain.model.event.problems.Problem;
public class IncorrectDataAuthenticationTag extends Problem {
public final class IncorrectDataAuthenticationTag extends Problem {
private static final String type = SCHEMA_URL + "incorrect-authentication-tag";
private static final String title = "Authentication-Tag ungültig";
private static final String detail = "Das Authentication-Tag des Fachdatensatzes ist ungültig.";
private static final String instance = "data";
private static final String TYPE = SCHEMA_URL + "incorrect-authentication-tag";
private static final String TITLE = "Authentication tag is invalid";
private static final String DETAIL = "The authentication tag for the submission data is invalid.";
private static final String INSTANCE = "data";
public IncorrectDataAuthenticationTag() {
super(type, title, detail, instance);
super(TYPE, TITLE, DETAIL, INSTANCE);
}
}
......@@ -2,14 +2,14 @@ package dev.fitko.fitconnect.api.domain.model.event.problems.metadata;
import dev.fitko.fitconnect.api.domain.model.event.problems.Problem;
public class AttachmentsMismatch extends Problem {
public final class AttachmentsMismatch extends Problem {
private static final String type = SCHEMA_URL + "attachments-mismatch";
private static final String title = "Fehlerhafte Anlagen-Liste";
private static final String detail = "Die Liste der Anlagen in Submission und Metadatensatz stimmt nicht überein.";
private static final String instance = "metadata";
private static final String TYPE = SCHEMA_URL + "attachments-mismatch";
private static final String TITLE = "List of attachments is invalid";
private static final String DETAIL = "The list of attachments in the submission and metadata record do not match.";
private static final String INSTANCE = "metadata";
public AttachmentsMismatch() {
super(type, title, detail, instance);
super(TYPE, TITLE, DETAIL, INSTANCE);
}
}
......@@ -2,14 +2,14 @@ package dev.fitko.fitconnect.api.domain.model.event.problems.metadata;
import dev.fitko.fitconnect.api.domain.model.event.problems.Problem;
public class IncorrectMetadataAuthenticationTag extends Problem {
public final class IncorrectMetadataAuthenticationTag extends Problem {
private static final String type = SCHEMA_URL + "incorrect-authentication-tag";
private static final String title = "Authentication-Tag ungültig";
private static final String detail = "Das Authentication-Tag des Metadatensatzes ist ungültig.";
private static final String instance = "metadata";
private static final String TYPE = SCHEMA_URL + "incorrect-authentication-tag";
private static final String TITLE = "Authentication tag is invalid";
private static final String DETAIL = "The authentication tag for the metadata is invalid.";
private static final String INSTANCE = "metadata";
public IncorrectMetadataAuthenticationTag() {
super(type, title, detail, instance);
super(TYPE, TITLE, DETAIL, INSTANCE);
}
}