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.Test, clientId, clientSecret, new List<string>() { await File.ReadAllTextAsync(privateKeyDecryption) }, await File.ReadAllTextAsync(privateKeySigning), logger); subscriber.SkipSubmissionDataValidation = true; var submissionForPickups = await subscriber.GetAvailableSubmissionsAsync( Guid.Parse(config["FitConnect:Subscriber:DestinationId"]!)); foreach (var submission in submissionForPickups) { var status = subscriber.GetStatusForSubmission(submission.DestinationId, submission.CaseId, submission.SubmissionId); 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()); logger.LogInformation("Schema-URI: {schemaUri}", receivedSubmission.GetDataSchemaUri()); var metadata = receivedSubmission.Metadata; var attachments = await receivedSubmission.GetAttachmentsAsync(); foreach (var attachment in attachments) { Console.WriteLine( "Anhang:\r\n\tMimeType: {0}\r\n\tDateiname: {1}\r\n\tGröße: {2}", attachment.MimeType, attachment.Filename, attachment.GetBytes().Length); if (attachment.GetBytes().Length == 0) continue; var content = attachment.GetBytes(); await File.WriteAllBytesAsync( Path.Combine(outputDirectory.FullName, (attachment.Filename ?? "temp.dat")), content); } await receivedSubmission .AcceptSubmissionAsync(); } catch (Exception e) { logger.LogError(e, "Fehler beim Abrufen der Einreichung"); } } } }