Sobes.tech
Middle

Zadanie: Zdarzenia są odbierane od użytkowników, każde musi być zweryfikowane w zewnętrznym źródle, ale ono nie odpowiada natychmiast. Zaimplementuj VerificationService, który: - Przyjmuje zdarzenia od użytkowników - Próbuje zweryfikować każde, kontaktując się z zewnętrzną usługą - Jeśli odpowiedź to PENDING, ponawia wysyłanie tego zdarzenia nie wcześniej niż po 5 sekundach - Maksymalnie 3 próby, po których identyfikator zdarzenia jest wyświetlany w stdout z statusem FAILED - Pomyślnie przetworzone zdarzenia są wyświetlane w stdout z statusem VERIFIED Szablony i szkice zależności zewnętrznych są już zaimplementowane: 1. VerificationStatus 2. Event 3. VerificationResult 4. IExternalSource public enum VerificationStatus { OK, Pending, Error } public record Event(string Id, string Payload); public record VerificationResult(VerificationStatus Status, string? Message = null); public interface IExternalSource { VerificationResult Verify(string eventId); } public class VerificationService { private readonly IExternalSource _externalSource; private const int MaxAttempts = 3; private static readonly TimeSpan RetryDelay = TimeSpan.FromSeconds(5); public VerificationService(IExternalSource externalSource) { _externalSource = externalSource; } // TODO: implement }