Beispiel Java
Einführung und Projekteinrichtung
Java ist eine robuste, objektorientierte Programmiersprache, die für ihre Plattformunabhängigkeit und ihr starkes Typsystem bekannt ist und sich daher ideal für Unternehmensanwendungen, Webdienste und groß angelegte Systeme eignet. Um Projektabhängigkeiten zu verwalten und Prozesse effektiv zu erstellen, empfiehlt es sich, ein Build-Tool wie Maven oder Gradle zu verwenden. In dieser Anleitung verwenden wir Maven. Sie können ein neues Maven-Projekt erstellen, indem Sie in Ihrem Terminal mvn archetype:generate -DgroupId=com.example.omniac -DartifactId=omniac-client -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false ausführen. Dadurch wird eine Standard-Projektstruktur mit einer pom.xml-Datei für die Abhängigkeitsverwaltung erstellt. Navigieren Sie mit „cd omniac-client“ zu Ihrem Projektverzeichnis. Die Maven-Struktur speichert Ihren Quellcode in „src/main/java“ und Tests in „src/test/java“ und bietet so eine übersichtliche und gut organisierte Entwicklungsumgebung, die für IDEs und andere Entwickler leicht verständlich ist.
Empfehlung: IntelliJ IDEA für die Entwicklung
IntelliJ IDEA ist eine ausgezeichnete Wahl für die Java-Entwicklung und bietet viele Funktionen, die die Entwicklung erleichtern. Öffnen Sie nach der Installation Ihr Maven-Projekt, indem Sie „Datei > Öffnen“ auswählen und das Stammverzeichnis Ihres Projekts (in dem sich die Datei „pom.xml“ befindet) auswählen. IntelliJ erkennt automatisch die Maven-Projektstruktur und lädt die Abhängigkeiten herunter. Die IDE bietet eine hervorragende IntelliSense-Funktion (Code-Vervollständigung), integrierte Refactoring-Tools und umfassende Debugging-Funktionen. Sie können Ihre Anwendung direkt aus der IDE heraus mit der grünen Wiedergabetaste ausführen oder das integrierte Terminal (Alt+F12) verwenden, um Maven-Befehle wie mvn compile, mvn test oder mvn package auszuführen. Die integrierte Versionskontrolle erleichtert die Verwaltung Ihres Git-Repositorys. Mit Funktionen wie automatischen Importen, Codeformatierung und intelligenter Fehlererkennung bietet IntelliJ IDEA eine umfassende Entwicklungsumgebung für die effiziente Erstellung und das Testen Ihrer Java-Anwendung.
Vorraussetzungen
Wir empfehlen dringend die Verwendung einer Unix-basierten Entwicklungsumgebung. Dies ist nicht nur mit Linux oder macOS möglich, sondern auch durch die Installation des Linux-Subsystems für Windows. Wenn Sie ein reines Windows-System verwenden, müssen Sie möglicherweise bestimmte Schritte anpassen.
Maven Projekt erstellen
Wie erwähnt, verwenden wir Maven für das Abhängigkeitsmanagement. Wenn Sie das Projekt noch nicht erstellt haben, führen Sie die folgenden Befehle aus:
mvn archetype:generate -DgroupId=com.example.omniac -DartifactId=omniac-client -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
cd omniac-client
Generieren des API-Clients
Wie in unserer Dokumentation empfohlen, verwenden wir den openapi-generator, um den erforderlichen Code für die Interaktion mit der API zu generieren. Dies gewährleistet Sicherheit und unterbricht den Vorgang bei kritischen Fehlern so schnell wie möglich.
Fügen Sie zunächst das OpenAPI Generator Maven-Plugin zu Ihrer pom.xml hinzu:
<project>
<!-- ... existing configuration ... -->
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.6.8</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.10.0</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
<!-- Additional dependencies required by generated code -->
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>logging-interceptor</artifactId>
<version>4.10.0</version>
</dependency>
<dependency>
<groupId>io.gsonfire</groupId>
<artifactId>gson-fire</artifactId>
<version>1.7.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>6.6.0</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/openapi.yaml</inputSpec>
<generatorName>java</generatorName>
<output>${project.basedir}/target/generated-sources</output>
<apiPackage>com.example.omniac.api</apiPackage>
<modelPackage>com.example.omniac.model</modelPackage>
<generateSupportingFiles>true</generateSupportingFiles>
<invokerPackage>com.example.omniac.client</invokerPackage>
<configOptions>
<library>okhttp-gson</library>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Kopieren Sie anschließend die „openapi.yaml“ in das Projektverzeichnis und generieren Sie den Client:
mvn clean generate-sources
Erstellen Sie nun eine main-class, um den API-Client zu konfigurieren. Erstellen Sie src/main/java/com/example/omniac/OmniacClient.java:
package com.example.omniac;
import com.example.omniac.client.ApiClient;
import com.example.omniac.client.Configuration;
public class OmniacClient {
private static ApiClient apiClient;
public static void initializeClient(String apiKey) {
apiClient = Configuration.getDefaultApiClient();
apiClient.setBasePath("https://api.omniac.de");
apiClient.setApiKey(apiKey);
}
public static ApiClient getApiClient() {
return apiClient;
}
}
Tenant info abrufen
Jetzt können Sie eine API-Instanz der TenantAPI initialisieren. Verwenden Sie die Funktion getTenant Ihres API-Clients, um Informationen über Ihren Tenant abzurufen.
package com.example.omniac;
import com.example.omniac.api.TenantApi;
import com.example.omniac.model.Tenant;
public class TenantExample {
public static void main(String[] args) {
// Initialize the client with your API key
OmniacClient.initializeClient("YOUR_API_KEY_GOES_HERE");
TenantApi tenantApi = new TenantApi(OmniacClient.getApiClient());
try {
Tenant tenant = tenantApi.getTenant();
System.out.println(tenant);
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
e.printStackTrace();
}
}
}
Profile zum Tenant hinzufügen
Um die Überwachung von Attributen zu starten und Alerts zu erhalten, müssen Sie einen Benutzer für Ihren Tenant konfigurieren. Nachdem Sie das Profil erfolgreich erstellt haben, können Sie mit dem Hinzufügen von Attributen beginnen.
package com.example.omniac;
import com.example.omniac.api.ProfileApi;
import com.example.omniac.model.Profile;
import com.example.omniac.model.ProfileCreateRequest;
import com.example.omniac.model.AttributeCreateRequest;
import com.example.omniac.model.AttributeType;
import java.util.Arrays;
import java.util.List;
public class ProfileExample {
public static void main(String[] args) {
// Initialize the client with your API key
OmniacClient.initializeClient("YOUR_API_KEY_GOES_HERE");
ProfileApi profileApi = new ProfileApi(OmniacClient.getApiClient());
// Create a new profile
ProfileCreateRequest newProfile = new ProfileCreateRequest()
.name("test")
.userLanguage("de");
try {
Profile profile = profileApi.createProfile(newProfile);
System.out.println("Created profile with ID: " + profile.getId());
// Add attributes to the profile
AttributeCreateRequest emailAttribute = new AttributeCreateRequest()
.type("email")
.value("test@example.com");
List<AttributeCreateRequest> attributes = Arrays.asList(emailAttribute);
Object apiResponse = profileApi.replaceAttributes(profile.getId(), attributes);
System.out.println("Attributes added: " + apiResponse);
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
e.printStackTrace();
}
}
}
Mehrere Profile als Batch anlegen
Neben der Möglichkeit individuelle Profile anzulegen, bietet omniac Business auch an bis zu 500 Profile gleichzeitig mit Attributen anzulegen.
package com.example.omniac;
import java.util.ArrayList;
import java.util.List;
import com.example.omniac.api.ProfileApi;
import com.example.omniac.model.AttributeCreateRequest;
import com.example.omniac.model.CreateProfiles201Response;
import com.example.omniac.model.ProfileCreateBatchRequest;
public static void main(String[] args) {
// Replace with a real API key or load from environment
OmniacClient.initializeClient("YOUR_API_KEY_GOES_HERE");
ProfileApi profileApi = new ProfileApi(OmniacClient.getApiClient());
List<ProfileCreateBatchRequest> batch = new ArrayList<>();
ProfileCreateBatchRequest req = new ProfileCreateBatchRequest()
.name("Test1")
.userLanguage("de");
// add attribute
req.addAttributesItem(new AttributeCreateRequest()
.type("email")
.value("test@example.com")
);
batch.add(req);
try {
CreateProfiles201Response resp = profileApi.createProfiles(batch);
System.out.println("CreateProfiles response: " + resp);
} catch (com.example.omniac.client.ApiException e) {
System.err.println("Error calling createProfiles: " + e.getMessage());
e.printStackTrace();
}
}
Alerts abrufen
Nach einigen Minuten gehen Alerts ein, falls Lecks gefunden wurden. Sie können diese mit der Funktion „getProfile“ und Ihrer ProfileID abrufen. Mit den beiden Parametern nach der ProfileID können Sie neben den Alerts auch die Benutzerattribute (gehasht und verschlüsselt) abrufen.
package com.example.omniac;
import com.example.omniac.api.ProfileApi;
import com.example.omniac.model.Profile;
public class AlertsExample {
public static void main(String[] args) {
// Initialize the client with your API key
OmniacClient.initializeClient("YOUR_API_KEY_GOES_HERE");
ProfileApi profileApi = new ProfileApi(OmniacClient.getApiClient());
try {
// Replace "profileID" with your actual profile ID
Profile profile = profileApi.getProfile("profileID", true, true);
System.out.println("Profile with alerts: " + profile);
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
e.printStackTrace();
}
}
}
Push-Benachrichtigungs-Endpunkt bereitstellen
Um Sie noch schneller zu benachrichtigen, bieten wir eine Push-API für neue Benachrichtigungen an. Sobald etwas gefunden wird, veröffentlichen wir die Benachrichtigung in Ihrem System. Dies geschieht über einen HTTP-Aufruf. Die Zustellung wird auf unserer Seite als abgeschlossen markiert, sobald Ihre API einen 2xx-HTTP-Statuscode zurückgibt.
Um diese Funktion nutzen zu können, müssen Sie sich mit uns in Verbindung setzen, damit wir die Funktion für Ihren Tenant aktivieren können.