Exemple #1
0
        public void WhenRetrievingTheNextOccurenceTimeWhenCurrentDateIsOccurenceTime()
        {
            var schedule = new SubscriptionSchedule(new QuerySchedule {
                Hour = "1", Minute = "0", Second = "0"
            });
            var nextOccurence = schedule.GetNextOccurence(new DateTime(2019, 08, 01, 01, 00, 00));

            Assert.AreEqual(new DateTime(2019, 08, 02, 01, 00, 00), nextOccurence);
        }
Exemple #2
0
        public void WhenRetrievingTheNextOccurenceTime()
        {
            var schedule = new SubscriptionSchedule(new QuerySchedule {
                Hour = "1"
            });
            var nextOccurence = schedule.GetNextOccurence(new DateTime(2019, 08, 01, 15, 59, 05));

            Assert.AreEqual(new DateTime(2019, 08, 02, 01, 00, 00), nextOccurence);
        }
        public static void Validate(Subscription subscription)
        {
            EnsureDestinationIsValidURI(subscription);
            EnsureDestinationHasEndSlash(subscription);

            if (!(subscription.Schedule == null ^ string.IsNullOrEmpty(subscription.Trigger)))
            {
                throw new EpcisException(ExceptionType.SubscriptionControlsException, "Only one of the schedule and trigger must be provided");
            }
            if (!SubscriptionSchedule.IsValid(subscription))
            {
                throw new EpcisException(ExceptionType.SubscriptionControlsException, "Provided schedule parameters are invalid");
            }
        }
        public void Register(Subscription subscription)
        {
            Pulse(() =>
            {
                if (string.IsNullOrEmpty(subscription.Trigger))
                {
                    _scheduledExecutions[subscription] = new SubscriptionSchedule(subscription.Schedule).GetNextOccurence(DateTime.UtcNow);
                }
                else
                {
                    if (!_triggeredSubscriptions.ContainsKey(subscription.Trigger))
                    {
                        _triggeredSubscriptions[subscription.Trigger] = new List <Subscription>();
                    }

                    _triggeredSubscriptions[subscription.Trigger].Add(subscription);
                }
            });
        }
Exemple #5
0
        public async Task <IActionResult> Register(SubscriptionSchedule SubscriptionSchedule)
        {
            var userWithSameEmail = _dbContext.SubscriptionSchedule.SingleOrDefault(u => u.ScheduleName == SubscriptionSchedule.ScheduleName);

            if (userWithSameEmail != null)
            {
                return(BadRequest("Schedule Name already exists"));
            }
            var SubscriptionScheduleObj = new SubscriptionSchedule
            {
                SubSchID     = Guid.NewGuid(),
                ScheduleType = SubscriptionSchedule.ScheduleType,
                ScheduleName = SubscriptionSchedule.ScheduleName
            };

            _dbContext.SubscriptionSchedule.Add(SubscriptionScheduleObj);
            await _dbContext.SaveChangesAsync();

            return(StatusCode(StatusCodes.Status201Created));
        }
Exemple #6
0
            private void ValidateRequest(Subscription subscription)
            {
                var query = _queries.SingleOrDefault(q => q.Name == subscription.QueryName);

                if (query == null)
                {
                    throw new EpcisException(ExceptionType.NoSuchNameException, $"Query with name '{subscription.QueryName}' is not implemented");
                }
                else if (!query.AllowSubscription)
                {
                    throw new EpcisException(ExceptionType.SubscribeNotPermittedException, $"Query with name '{subscription.QueryName}' does not allow subscription");
                }
                else if (!(subscription.Schedule == null ^ string.IsNullOrEmpty(subscription.Trigger)))
                {
                    throw new EpcisException(ExceptionType.SubscriptionControlsException, "Only one of the schedule and trigger must be provided");
                }
                else if (!SubscriptionSchedule.IsValid(subscription))
                {
                    throw new EpcisException(ExceptionType.SubscriptionControlsException, "Provided schedule parameters are invalid");
                }

                EnsureDestinationIsValidURI(subscription);
                EnsureDestinationHasEndSlash(subscription);
            }