package io.konik.sdk; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; import io.konik.Configuration; import io.konik.zugferd.unqualified.ZfDate; import io.konik.zugferd.unqualified.ZfDateDay; import java.io.IOException; /** * Main SDK configuration class. */ public class ZinvoiceApiConfig { /** * Zinvoice user API KEY */ private final String apiKey; /** * Absolute URL to Zinvoice remote service. * * e.g. https://app.z-rechnung.com */ private final String destinationUrl; public ZinvoiceApiConfig() { this(Configuration.INSTANCE.getProperty("io.konik.zinvoice.api-key"), Configuration.INSTANCE.getProperty("io.konik.zinvoice.url")); } public ZinvoiceApiConfig(String apiKey, String destinationUrl) { this.apiKey = apiKey; this.destinationUrl = destinationUrl; } public String getApiKey() { return apiKey; } public String getDestinationUrl() { return destinationUrl; } public ObjectMapper getDefaulObjectMapper() { SimpleModule module = new SimpleModule(); module.addDeserializer(ZfDate.class, new JsonDeserializer<ZfDate>() { @Override public ZfDate deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { Long timestamp = jp.readValueAs(Long.class); return new ZfDateDay(timestamp); } }); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); objectMapper.registerModule(module); return objectMapper; } }