Exemplo n.º 1
0
        public async Task <IEnumerable <EventBase> > GetLatestEventsAsync(PostcrossingEventTypeEnum postcrossingEventType = PostcrossingEventTypeEnum.All, long?fromPostcrossingEventId = null)
        {
            await _semaphore.WaitAsync();

            try
            {
                var currentLatestPostcrossingEventId = GetLatestPostcrossingEventId();
                var fromPostcrossingEvent            = fromPostcrossingEventId ?? currentLatestPostcrossingEventId;

                var postcrossingEvents = await _postcrossingClient.GetPostcrossingEventsAsync(fromPostcrossingEvent);

                _currentLatestPostcrossingEventId = _postcrossingEventProcessor.GetLatestEventId(postcrossingEvents, currentLatestPostcrossingEventId);

                if (_postcrossingEngineSettingsService.PersistData)
                {
                    _eventRepository.Add(postcrossingEvents);
                }

                return(_postcrossingEventProcessor.BuildResultForRequestedEventType(postcrossingEventType, fromPostcrossingEvent, postcrossingEvents));
            }
            finally
            {
                _semaphore.Release();
            }
        }
Exemplo n.º 2
0
        public IEnumerable <EventBase> BuildResultForRequestedEventType(PostcrossingEventTypeEnum postcrossingEventType, long fromPostcrossingEventId, IEnumerable <EventBase> postcrossingEvents)
        {
            var result = new List <EventBase>();

            if (postcrossingEventType.HasFlag(PostcrossingEventTypeEnum.Register))
            {
                result.AddRange(GetEventsStartingFrom <Register>(fromPostcrossingEventId, postcrossingEvents));
            }

            if (postcrossingEventType.HasFlag(PostcrossingEventTypeEnum.Send))
            {
                result.AddRange(GetEventsStartingFrom <Send>(fromPostcrossingEventId, postcrossingEvents));
            }

            if (postcrossingEventType.HasFlag(PostcrossingEventTypeEnum.SignUp))
            {
                result.AddRange(GetEventsStartingFrom <SignUp>(fromPostcrossingEventId, postcrossingEvents));
            }

            if (postcrossingEventType.HasFlag(PostcrossingEventTypeEnum.Upload))
            {
                result.AddRange(GetEventsStartingFrom <Upload>(fromPostcrossingEventId, postcrossingEvents));
            }

            if (postcrossingEventType.HasFlag(PostcrossingEventTypeEnum.Unknown))
            {
                result.AddRange(GetEventsStartingFrom <EventBase>(fromPostcrossingEventId, postcrossingEvents));
            }

            return(result.OrderBy(r => r.EventId));
        }
 public AssociatedEventType(PostcrossingEventTypeEnum eventType)
 {
     EventType = eventType;
 }