HentKvitteringAsync() public method

Forespør Kvittering for Forsendelser. Kvitteringer blir tilgjengeliggjort etterhvert som de er klare i Meldingsformidler. Det er ikke mulig å etterspørre Kvittering for en spesifikk Forsendelse.
Dersom det ikke er tilgjengelige Kvitteringer skal det ventes følgende tidsintervaller før en ny forespørsel gjøres: normalMinimum 10 minutter prioritertMinimum 1 minutt
public HentKvitteringAsync ( Kvitteringsforespørsel kvitteringsforespørsel ) : Task
kvitteringsforespørsel Difi.SikkerDigitalPost.Klient.Domene.Entiteter.Kvitteringer.Kvitteringsforespørsel
return Task
コード例 #1
0
        private static async void HentKvitteringer(SikkerDigitalPostKlient sikkerDigitalPostKlient)
        {
            Log.Debug("");

            Log.Debug(@" > Starter å hente kvitteringer ...");

            Thread.Sleep(3000);

            while (true)
            {
                var kvitteringsForespørsel = new Kvitteringsforespørsel(Prioritet.Prioritert, MpcId);
                Log.Debug($" > Henter kvittering på kø '{kvitteringsForespørsel.Mpc}'...");

                var kvittering = await sikkerDigitalPostKlient.HentKvitteringAsync(kvitteringsForespørsel).ConfigureAwait(false);

                if (kvittering is TomKøKvittering)
                {
                    Console.WriteLine($"  - Kø '{kvitteringsForespørsel.Mpc}' er tom. Stopper å hente meldinger. ");
                    break;
                }

                if (kvittering is TransportFeiletKvittering)
                {
                    var feil = ((TransportFeiletKvittering) kvittering).Beskrivelse;
                    WriteToConsoleWithColor(
                        "En feil skjedde under transport. Forespørsel for kvittering ble ikke godtatt av Meldingsformidler: " +
                        feil, true);
                    break;
                }

                if (kvittering is Leveringskvittering)
                {
                    WriteToConsoleWithColor("  - En leveringskvittering ble hentet!");
                }

                if (kvittering is Åpningskvittering)
                {
                    WriteToConsoleWithColor("  - Har du sett. Noen har åpnet et brev. Moro.");
                }

                if (kvittering is Returpostkvittering)
                    WriteToConsoleWithColor("  - Du har fått en returpostkvittering for fysisk post.");

                if (kvittering is Mottakskvittering)
                    WriteToConsoleWithColor("  - Kvittering på sending av fysisk post mottatt.");

                if (kvittering is Feilmelding)
                {
                    var feil = (Feilmelding) kvittering;
                    WriteToConsoleWithColor("  - En feilmelding ble hentet :" + feil.Detaljer, true);
                }

                Console.WriteLine(@"  - Bekreftelse på mottatt kvittering sendes ...");
                sikkerDigitalPostKlient.Bekreft((Forretningskvittering) kvittering);
                Console.WriteLine(@"   - Kvittering sendt.");
            }
        }
        private async Task<int> HentKvitteringOgBekreft(SikkerDigitalPostKlient sdpKlient, string testBeskrivelse, string mpcId,
            Forsendelse forsendelse)
        {
            var hentKvitteringPåNytt = true;
            var prøvdPåNytt = 0;
            
            while (hentKvitteringPåNytt && (prøvdPåNytt++ <= _hentKvitteringerMaksAntallGanger))
            {
                Thread.Sleep(1000);
                var kvitteringsforespørsel = new Kvitteringsforespørsel(Prioritet.Prioritert, mpcId);
                var kvittering = await sdpKlient.HentKvitteringAsync(kvitteringsforespørsel);

                if (kvittering == null) { continue; }

                sdpKlient.Bekreft((Forretningskvittering)kvittering);

                hentKvitteringPåNytt = false;

                var konversasjonsId = Guid.Empty;

                if (kvittering is Feilmelding)
                {
                    var feilmelding = (Feilmelding)kvittering;
                    konversasjonsId = feilmelding.KonversasjonsId;
                    Assert.Fail("Test '{0}' feilet. Feilmelding fra Meldingsformidler: {1}",
                        testBeskrivelse,
                        feilmelding.Detaljer);
                    
                }

                if (kvittering is Leveringskvittering)
                {
                    var leveringskvittering = (Leveringskvittering)kvittering;
                    konversasjonsId = leveringskvittering.KonversasjonsId;
                }

               
                if (konversasjonsId.ToString() != forsendelse.KonversasjonsId.ToString())
                {
                    throw new FieldAccessException(
                        string.Format(
                            "Fikk ikke til å hente kvittering for test '{0}' -- det ble hentet feil kvittering eller ingen kvittering. Var du for rask å hente, " +
                            "eller har noe skjedd galt med hvilken kø du henter fra?", testBeskrivelse));
                }
            }
            return prøvdPåNytt;
        }