Exemple #1
0
        public HttpResponseMessage SetConfig(ConfigModel configModel)
        {
            if (!ModelState.IsValid || configModel == null)
                return Request.CreateResponse(HttpStatusCode.BadRequest);

            var scheduledTasks = new List<ScheduledTaskDto>();

            var config = AdminManager.GetConfig().UpdateConfigFromModel(configModel);

            // update scheduled tasks or create new
            foreach (var scheduledTaskModel in configModel.ScheduledTasks)
            {
                var scheduledTask = AdminManager.GetScheduledTask(scheduledTaskModel);
                if (scheduledTask == null)
                {
                    scheduledTask = new ScheduledTaskDto(scheduledTaskModel);
                }
                else
                {
                    scheduledTask.UpdateScheduledTaskFromModel(scheduledTaskModel);
                }

                scheduledTasks.Add(scheduledTask);
            }

            AdminManager.Save(config, scheduledTasks);
            return new HttpResponseMessage(HttpStatusCode.Accepted);
        }
Exemple #2
0
        internal static void Handle(ScheduledTaskDto scheduledTask)
        {
            if (CurrentTask.IsTaskRunning) return;
            InitializeTask(scheduledTask);

            try
            {
                switch (scheduledTask.SyncOperation)
                {
                    case SyncOperation.All:
                        AllImport();
                        break;
                    case SyncOperation.Channels:
                        ChannelsImport();
                        break;
                    case SyncOperation.PlaylistItems:
                        PlaylistItemsImport();
                        break;
                    case SyncOperation.Videos:
                        VideosImport();
                        break;
                    default:
                        throw new ArgumentOutOfRangeException();
                }

                scheduledTask.LastRunResult = EventStatus.Ok;
            }
            catch (Exception e)
            {
                if ((e is AggregateException && e.InnerException is OperationCanceledException) || e is OperationCanceledException)
                {
                    if (_taskService.Token.IsCancellationRequested)
                    {
                        _taskService.EventLog.Log("Task was cancelled by user");
                        scheduledTask.LastRunResult = EventStatus.Cancelled;
                        return;
                    }
                }

                _taskService.EventLog.Log("Task was cancelled by error");
                scheduledTask.LastRunResult = EventStatus.Error;
                _logger.GetLogger().Error(e);
            }
            finally
            {
                Cleanup(scheduledTask);
            }
        }
Exemple #3
0
 public static void UpdateScheduledTask(ScheduledTaskDto scheduledTask)
 {
     var configService = new ConfigService();
     configService.SaveScheduledTask(scheduledTask);
 }
Exemple #4
0
        private static void Cleanup(ScheduledTaskDto scheduledTask)
        {
            // TODO: Dispose
            _taskService.EventLog.Log($"Sync finished: {_taskService.ScheduledTaskInfo.SyncOperation}");

            scheduledTask.History = (EventLog) _taskService.EventLog;
            CurrentTask.IsTaskRunning = false;

            _taskService = null;
            _syncService = null;
            _logger = null;
        }
Exemple #5
0
 public TaskService(ScheduledTaskDto scheduledTask)
 {
     EventLog = new EventLog();
     ScheduledTaskInfo = scheduledTask;
     scheduledTask.History = (EventLog) EventLog;
     TokenSource = new CancellationTokenSource();
     Token = TokenSource.Token;
 }
Exemple #6
0
        private static void InitializeTask(ScheduledTaskDto scheduledTask)
        {
            _taskService = new TaskService(scheduledTask);
            _syncService = new SyncService(_taskService);
            _logger = new Logger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, _taskService.TraceId);

            CurrentTask.IsTaskRunning = true;
            _taskService.EventLog.Log($"Sync started: {scheduledTask.SyncOperation}");
        }
Exemple #7
0
 public void SaveScheduledTask(ScheduledTaskDto scheduledTask)
 {
     var query = new ScheduledTasksQuery(scheduledTask.TaskId);
     _scheduledTaskQueryHandler.CreateOrUpdateValueById<ScheduledTaskDto>(query, scheduledTask);
 }