-
Klaus Fischer authoredKlaus Fischer authored
SubscriberDemo.cs 2.62 KiB
using FitConnect;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
namespace ConsoleAppExample;
public static class SubscriberDemo {
public static async Task Run(IConfiguration config, ILogger logger) {
var clientId = config["FitConnect:Subscriber:ClientId"];
var clientSecret = config["FitConnect:Subscriber:ClientSecret"];
var privateKeyDecryption = config["FitConnect:Subscriber:PrivateKeyDecryption"];
var privateKeySigning = config["FitConnect:Subscriber:PrivateKeySigning"];
if (clientId == null || clientSecret == null || privateKeyDecryption == null ||
privateKeySigning == null) {
logger.LogError("Missing configuration values");
return;
}
OutputHelper.PrintSubscriber();
var subscriber = ClientFactory.GetSubscriberClient(FitConnectEnvironment.Testing, clientId,
clientSecret,
new List<string>() { await File.ReadAllTextAsync(privateKeyDecryption) },
await File.ReadAllTextAsync(privateKeySigning),
logger);
var submissionForPickups = await subscriber.GetAvailableSubmissionsAsync(Guid.Parse(config["FitConnect:Subscriber:DestinationId"]!));
foreach (var submission in submissionForPickups) {
var outputDirectory = Directory.CreateDirectory(
Path.Combine(".", "submissions", $"{submission.SubmissionId}", "attachments"));
try {
outputDirectory.Create();
var receivedSubmission =
await subscriber.RequestSubmissionAsync(submission.SubmissionId);
logger.LogInformation("Fachdaten:\r\n\tMimeType: {mimeType}\r\n\t{Data}",
receivedSubmission.GetDataMimeType(), receivedSubmission.GetData());
// receivedSubmission.GetDataSchemaUri();
var metadata = receivedSubmission.Metadata;
var attachments = await receivedSubmission.GetAttachmentsAsync();
foreach (var attachment in attachments)
if (attachment.GetBytes().Length > 0) {
await File.WriteAllBytesAsync(
outputDirectory.FullName + "/" + (attachment.Filename ?? "temp.dat"),
attachment.GetBytes());
}
await receivedSubmission
.AcceptSubmissionAsync();
}
catch (Exception e) {
logger.LogError(e, "Fehler beim Abrufen der Einreichung");
}
}
}
}