FIT-Connect .NET SDK
For an implementation example take a look at the DemoRunner
!! IN DEVELOPMENT NOT FOR PRODUCTION USE !!
FIT-Connect .NET SDK is a .NET library for the FIT-Connect API.
Die Verwendung des SDKs ist in der documentation (ger) erklärt
For information how to use the SDK and FitConnect visit:
Allgemeines
Environment
Das FitConnect SDK kann an die folgenden Umgebungen angeschlossen werden:
- Testing:
FitConnectEnvironment.Testing
- Staging:
FitConnectEnvironment.Staging
- Production:
FitConnectEnvironment.Production
Hierfür muss der Client die Environment auswählen oder einen eigenen Environment-Parameter übergeben.
Credentials
ClientId und ClientSecret sind die Grundlage, um einen Token vom OAuth-Server abfragen zu können. Die beiden Werte sind im Self-Service Portal der Testumgebung von FIT-Connect zu erstellen.
Sender
flowchart LR
start([GetSender])
destination(WithDestination)
service(WithServiceType)
attachments(WithAttachments)
data(WithData)
encAttachments(WithEncryptedAttachments)
encMetadata(WithEncryptedMetadata)
encData(WithEncryptedData)
submit([Submit])
start-->destination-->service-->attachments-->data
service-->encAttachments-->encMetadata-->encData
data-->submit
encData-->submit
Das SDK verhindert auf Grund der FluentAPI, dass die Methoden in der falschen Reihe aufgerufen werden können.
GetSender(FitConnectEnvironment.Testing, clientId, clientSecret, logger)
Hier werden die FIT Connect Environment ausgewählt und die Credentials übergeben.
Der Parameter logger
ist optional und muss das Interface Microsoft.Extensions.Logging.ILogger
implementieren.
.WithDestination(destinationId)
Die Destination ID des Zustelldienstes muss an dieser Stelle übergeben werden.
Noch nicht vollständig getestet!
Eine Möglichkeit, die Destination ID zu ermitteln, geht über die Methode FindDestinationId()
des Senders.
.WithServiceType("FIT Connect Demo", leikaKey)
Der Service Type muss an dieser Stelle übergeben werden.
Hierfür wird ein Leistungsschlüssel (LeiKa-Schlüssel) benötigt.
Leistungsschlüssel haben diese Form urn:de:fim:leika:leistung:99400048079000
.WithAttachments(new Attachment("Test.pdf", "Test Attachment"))
Die Anhänge zum Antrag werden mit .WithAttachments
übergeben.
Diese Methode erwartet ein Array von Attachment Objekten die als params
übergeben werden können.
Das Attachment kann mit den folgenden Parametern erstellt werden:
- Metadaten und byte[] content
- Dateiname und Beschreibung
Dazu werden zwei Konstruktoren bereitgestellt:
Attachment(Api.Metadata.Attachment metadata, byte[] content)
Attachment(string fileName, string description,)
.WithData("{"message":"Hello World"}")
Die Fachdaten werden als JSON String übergeben.
.Submit()
Das Abschicken der Submission erfolgt mit diesem Aufruf.
Beispiel
var submission = Client
.GetSender(FitConnectEnvironment.Development, clientId, clientSecret, logger)
.WithDestination(destinationId)
.WithServiceType("FIT Connect Demo", leikaKey)
.WithAttachments(new Attachment("Test.pdf", "Test Attachment"))
.WithData("{\"message\":\"Hello World\"}")
.Submit();
Subscriber
Der Subscriber braucht zusätzliche Informationen, um die Submissions abrufen zu können. Hier sind zusätzlich die Schlüssel zum Ver- und Entschlüsseln notwendig.
flowchart LR
start([GetSubscriber])
availableSub(GetAvailableSubmission)
requestSub(RequestSubmission)
subscriberWithSub([SubscriberWithSubmission])
subscriberWithSub_([SubscriberWithSubmission])
data(GetDataJson)
attachments(GetAttachments)
accept(AcceptSubmission)
reject(RejectSubmission)
forward(ForwardSumbission)
finished{{Abgeschlossen}}
rejected{{Zurueckgewiesen}}
start-->availableSub-->requestSub-->subscriberWithSub
subscriberWithSub_-->data-->attachments
attachments-->accept-->finished
attachments-->reject-->rejected
attachments-->forward
.GetSubscriber(...)
Hier werden die FIT Connect Environment ausgewählt, die Keys und die Credentials übergeben.
Der Parameter logger
ist optional und muss das Interface Microsoft.Extensions.Logging.ILogger
implementieren.
.GetAvailableSubmissions()
Liefert eine Liste mit den verfügbaren Submissions zurück.
.RequestSubmission(submissionId)
Hiermit wird die Submission abgerufen und im Subscriber gespeichert. Der Rückgabewert der Funktion ist also Subscriber mit einer Submission
.GetDataJson()
Liefert die Fachdaten als JSON String zurück.
.GetAttachments()
Gibt eine Liste mit den Attachments der Submission zurück. Die Attachments können so geprüft werden.
.AcceptSubmission()
Akzepiert die Submission und löscht diese vom Server.
.RejectSubmission()
Weißt die Submission zurück.
.ForwardSubmission()
Beispiel
var subscriber = Client.GetSubscriber(FitConnectEnvironment.Testing, clientId,
clientSecret,
privateKeyDecryption,
privateKeySigning,
publicKeyEncryption,
publicKeySignatureVerification,
logger);
var submissions = subscriber.GetAvailableSubmissions();
// Alle verfügbaren Submissions laden
foreach (var submission in submissions) {
var subscriberWithSubmission = subscriber.RequestSubmission(submission.SubmissionId);
// Laden der Anhänge
var attachments = subscriberWithSubmission
.GetAttachments();
// Ausgabe der Fachdaten auf der Konsole
logger.LogInformation("Fachdaten: {Data}", subscriberWithSubmission.GetDataJson());
// Submission akzeptieren und abschließen
subscriberWithSubmission.AcceptSubmission();
}
Router
Die Client-Implementierung der Router API
Client.GetRouter(FitConnectEnvironment.Development, logger);
License
Source code is licensed under the EUPL.
Rechtlicher Hinweis: Dieses Software Development Kit (SDK) ist dazu bestimmt, die Anbindung einer Software an die FIT-Connect-Infrastruktur zu ermöglichen. Hierfür kann das SDK in die anzubindenden Software integriert werden. Erfolgt die Integration des SDK in unveränderter Form, liegt keine Bearbeitung im Sinne der EUPL bzw. des deutschen Urheberrechts vor. Die Art und Weise der Verlinkung des SDK führt insbesondere nicht zur Schaffung eines abgeleiteten Werkes. Die unveränderte Übernahme des SDK in eine anzubindende Software führt damit nicht dazu, dass die anzubindende Software unter den Bedingungen der EUPL zu lizenzieren ist. Für die Weitergabe des SDK selbst - in unveränderter oder bearbeiteter Form, als Quellcode oder ausführbares Programm - gelten die Lizenzbedingungen der EUPL in unveränderter Weise.