Skip to content
Snippets Groups Projects
SubscriberDemo.cs 2.62 KiB
Newer Older
using FitConnect;
Klaus Fischer's avatar
Klaus Fischer committed
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;

namespace ConsoleAppExample;
Klaus Fischer's avatar
Klaus Fischer committed

public static class SubscriberDemo {
Klaus Fischer's avatar
Klaus Fischer committed
    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"];

Klaus Fischer's avatar
Klaus Fischer committed
        if (clientId == null || clientSecret == null || privateKeyDecryption == null ||
            privateKeySigning == null) {
            logger.LogError("Missing configuration values");
            return;
        }
Klaus Fischer's avatar
Klaus Fischer committed

        OutputHelper.PrintSubscriber();

Klaus Fischer's avatar
Klaus Fischer committed
        var subscriber = ClientFactory.GetSubscriberClient(FitConnectEnvironment.Testing, clientId,
Klaus Fischer's avatar
Klaus Fischer committed
            clientSecret,
Klaus Fischer's avatar
Klaus Fischer committed
            new List<string>() { await File.ReadAllTextAsync(privateKeyDecryption) },
Klaus Fischer's avatar
Klaus Fischer committed
            await File.ReadAllTextAsync(privateKeySigning),
        var submissionForPickups = await subscriber.GetAvailableSubmissionsAsync(Guid.Parse(config["FitConnect:Subscriber:DestinationId"]!));
Klaus Fischer's avatar
Klaus Fischer committed
        foreach (var submission in submissionForPickups) {
            var outputDirectory = Directory.CreateDirectory(
Klaus Fischer's avatar
Klaus Fischer committed
                Path.Combine(".", "submissions", $"{submission.SubmissionId}", "attachments"));
                outputDirectory.Create();
Klaus Fischer's avatar
Klaus Fischer committed
                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)
Klaus Fischer's avatar
Klaus Fischer committed
                    if (attachment.GetBytes().Length > 0) {
Klaus Fischer's avatar
Klaus Fischer committed
                        await File.WriteAllBytesAsync(
                            outputDirectory.FullName + "/" + (attachment.Filename ?? "temp.dat"),
Klaus Fischer's avatar
Klaus Fischer committed
                            attachment.GetBytes());
                    }
Klaus Fischer's avatar
Klaus Fischer committed
                await receivedSubmission
Klaus Fischer's avatar
Klaus Fischer committed
                    .AcceptSubmissionAsync();
            }
            catch (Exception e) {
                logger.LogError(e, "Fehler beim Abrufen der Einreichung");
            }