protected virtual async Task <RecordingStatus?> CreateOrDeleteSchedule(IProgram program, ScheduleRecordingType recordingType = ScheduleRecordingType.Once) { IScheduleControlAsync scheduleControl = _tvHandler.ScheduleControl; RecordingStatus? newStatus = null; if (scheduleControl != null) { RecordingStatus?recordingStatus = await GetRecordingStatusAsync(program); if (recordingStatus.HasValue && (recordingStatus.Value.HasFlag(RecordingStatus.Scheduled) || recordingStatus.Value.HasFlag(RecordingStatus.SeriesScheduled))) { if (await scheduleControl.RemoveScheduleForProgramAsync(program, recordingType)) { newStatus = RecordingStatus.None; } } else { var result = await scheduleControl.CreateScheduleAsync(program, recordingType); if (result.Success) { newStatus = recordingType == ScheduleRecordingType.Once ? RecordingStatus.Scheduled : RecordingStatus.SeriesScheduled; } } } return(newStatus); }
public static async Task <IList <WebScheduleBasic> > ProcessAsync(IOwinContext context, string filter, WebSortField?sort, WebSortOrder?order) { if (!ServiceRegistration.IsRegistered <ITvProvider>()) { throw new BadRequestException("GetSchedules: ITvProvider not found"); } IScheduleControlAsync scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControlAsync; var schedules = await TVAccess.GetSchedulesAsync(context); List <WebScheduleBasic> output = schedules.Select(schedule => ScheduleBasic(schedule)).ToList(); // sort and filter if (sort != null && order != null) { output = output.Filter(filter).SortScheduleList(sort, order).ToList(); } else { output = output.Filter(filter).ToList(); } return(output); }
private UPnPError OnCreateScheduleByTime(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context) { outParams = new List <object>(); IScheduleControlAsync scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControlAsync; IChannelAndGroupInfoAsync channelAndGroupInfo = ServiceRegistration.Get <ITvProvider>() as IChannelAndGroupInfoAsync; if (scheduleControl == null || channelAndGroupInfo == null) { return(new UPnPError(500, "IChannelAndGroupInfo or IScheduleControl service not available")); } int channelId = (int)inParams[0]; DateTime startTime = (DateTime)inParams[1]; DateTime endTime = (DateTime)inParams[2]; ScheduleRecordingType recordingType = (ScheduleRecordingType)inParams[3]; ISchedule schedule = null; AsyncResult <IChannel> result = channelAndGroupInfo.GetChannelAsync(channelId).Result; if (result.Success) { var scheduleResult = scheduleControl.CreateScheduleByTimeAsync(result.Result, startTime, endTime, recordingType).Result; if (scheduleResult.Success) { schedule = scheduleResult.Result; } } outParams = new List <object> { result.Success, schedule }; return(null); }
protected virtual async Task <RecordingStatus?> CreateSchedule(IProgram program, ScheduleRecordingType recordingType = ScheduleRecordingType.Once) { IScheduleControlAsync scheduleControl = _tvHandler.ScheduleControl; RecordingStatus? newStatus = null; if (scheduleControl != null) { RecordingStatus?recordingStatus = await GetRecordingStatusAsync(program); if (recordingStatus.HasValue && (recordingStatus.Value.HasFlag(RecordingStatus.Scheduled) || recordingStatus.Value.HasFlag(RecordingStatus.SeriesScheduled))) { // Delete any existing schedule if (await scheduleControl.RemoveScheduleForProgramAsync(program, recordingStatus.Value.HasFlag(RecordingStatus.SeriesScheduled) ? ScheduleRecordingType.EveryTimeOnEveryChannel : ScheduleRecordingType.Once)) { newStatus = RecordingStatus.None; } } // Now create new schedule var result = await scheduleControl.CreateScheduleAsync(program, recordingType); if (result.Success) { newStatus = recordingType == ScheduleRecordingType.Once ? RecordingStatus.Scheduled : RecordingStatus.SeriesScheduled; UpdateRecordingStatus(program, (RecordingStatus)newStatus, recordingType); SlimTvClientMessaging.SendSlimTvProgramChangedMessage(program); } } return(newStatus); }
private UPnPError OnGetRecordingFileOrStream(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context) { outParams = new List <object>(); IProgramInfoAsync programInfo = ServiceRegistration.Get <ITvProvider>() as IProgramInfoAsync; IScheduleControlAsync scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControlAsync; if (programInfo == null || scheduleControl == null) { return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available")); } int programId = (int)inParams[0]; IProgram program; bool result = false; string fileOrStream = null; if (programInfo.GetProgram(programId, out program)) { var scheduleResult = scheduleControl.GetRecordingFileOrStreamAsync(program).Result; if (scheduleResult.Success) { result = true; fileOrStream = scheduleResult.Result; } } outParams = new List <object> { result, fileOrStream }; return(null); }
private UPnPError OnCreateSchedule(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context) { outParams = new List <object>(); IProgramInfoAsync programInfo = ServiceRegistration.Get <ITvProvider>() as IProgramInfoAsync; IScheduleControlAsync scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControlAsync; if (programInfo == null || scheduleControl == null) { return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available")); } int programId = (int)inParams[0]; ScheduleRecordingType recordingType = (ScheduleRecordingType)inParams[1]; IProgram program; ISchedule schedule = null; bool result = false; if (programInfo.GetProgram(programId, out program)) { var scheduleResult = scheduleControl.CreateScheduleAsync(program, recordingType).Result; result = scheduleResult.Success; schedule = scheduleResult.Result; } outParams = new List <object> { result, schedule }; return(null); }
protected virtual async Task <RecordingStatus?> CreateOrDeleteScheduleByTimeAsync(IChannel program, DateTime start, DateTime end) { IScheduleControlAsync scheduleControl = _tvHandler.ScheduleControl; RecordingStatus? newStatus = null; if (scheduleControl != null) { var result = await scheduleControl.CreateScheduleByTimeAsync(program, start, end, ScheduleRecordingType.Once); if (result.Success) { newStatus = RecordingStatus.Scheduled; } } return(newStatus); }
protected virtual async Task <RecordingStatus?> GetRecordingStatusAsync(IProgram program) { IScheduleControlAsync scheduleControl = _tvHandler.ScheduleControl; if (scheduleControl == null) { return(null); } var result = await scheduleControl.GetRecordingStatusAsync(program); if (result.Success) { return(result.Result); } return(null); }
private UPnPError OnIsCurrentlyRecording(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context) { outParams = new List <object>(); IScheduleControlAsync scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControlAsync; if (scheduleControl == null) { return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available")); } string fileName = (string)inParams[0]; AsyncResult <ISchedule> result = scheduleControl.IsCurrentlyRecordingAsync(fileName).Result; outParams = new List <object> { result.Success, result.Result }; return(null); }
private UPnPError OnGetSchedules(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context) { outParams = new List <object>(); IProgramInfoAsync programInfo = ServiceRegistration.Get <ITvProvider>() as IProgramInfoAsync; IScheduleControlAsync scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControlAsync; if (programInfo == null || scheduleControl == null) { return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available")); } AsyncResult <IList <ISchedule> > result = scheduleControl.GetSchedulesAsync().Result; outParams = new List <object> { result.Success, result.Result }; return(null); }
private UPnPError OnGetProgramsForSchedule(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context) { outParams = new List <object>(); IScheduleControlAsync scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControlAsync; if (scheduleControl == null) { return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available")); } ISchedule schedule = (ISchedule)inParams[0]; AsyncResult <IList <IProgram> > result = scheduleControl.GetProgramsForScheduleAsync(schedule).Result; outParams = new List <object> { result.Success, result.Result }; return(null); }
private UPnPError OnRemoveSchedule(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context) { outParams = new List <object>(); IProgramInfoAsync programInfo = ServiceRegistration.Get <ITvProvider>() as IProgramInfoAsync; IScheduleControlAsync scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControlAsync; if (programInfo == null || scheduleControl == null) { return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available")); } ISchedule schedule = (ISchedule)inParams[0]; bool result = scheduleControl.RemoveScheduleAsync(schedule).Result; outParams = new List <object> { result }; return(null); }
private UPnPError OnRemoveScheduleForProgram(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context) { outParams = new List <object>(); IProgramInfoAsync programInfo = ServiceRegistration.Get <ITvProvider>() as IProgramInfoAsync; IScheduleControlAsync scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControlAsync; if (programInfo == null || scheduleControl == null) { return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available")); } int programId = (int)inParams[0]; ScheduleRecordingType recordingType = (ScheduleRecordingType)inParams[1]; IProgram program; var result = programInfo.GetProgram(programId, out program) && scheduleControl.RemoveScheduleForProgramAsync(program, recordingType).Result; outParams = new List <object> { result }; return(null); }