/// <summary> /// Post the specified request. /// </summary> /// <param name="request">Request.</param> public object Post(CreateSerie request) { WebSeries result; var context = TepWebContext.GetWebContext(PagePrivileges.AdminOnly); try { context.Open(); Collection serie = new Collection(context); serie = (Terradue.Tep.Collection)request.ToEntity(context, serie); serie.Store(); serie.GrantPermissionsToAll(); Activity activity = new Activity(context, serie, EntityOperationType.Create); activity.Store(); context.LogInfo(this, string.Format("/data/collection POST Id='{0}'", serie.Id)); result = new WebSeries(serie); context.Close(); } catch (Exception e) { context.LogError(this, e.Message, e); context.Close(); throw e; } return(result); }
public WebSeries GetTvSeries(string compositeId) { WebSeries series = new WebSeries(); DBLocations dbs = Utils.GetMPDbLocations(); SQLiteConnection db = new SQLiteConnection(SQLiteConnStr(dbs.db_tvseries)); try { db.Open(); } catch (Exception) { return(series); } SQLiteCommand cmd = db.CreateCommand(); cmd.CommandText = "SELECT online_episodes.SeasonIndex,online_episodes.EpisodeIndex,online_series.pretty_name,online_episodes.EpisodeName,online_episodes.Summary,local_episodes.EpisodeFilename,local_episodes.CompositeID FROM online_series,online_episodes,local_episodes WHERE online_series.ID=online_episodes.SeriesID AND online_episodes.CompositeID=local_episodes.CompositeID AND local_episodes.CompositeID='" + compositeId + "' ORDER BY online_series.pretty_name,online_episodes.SeasonIndex,online_episodes.EpisodeIndex"; SQLiteDataReader reader = cmd.ExecuteReader(); if (reader.Read()) { series = new WebSeries(SafeInt32(reader, 0), SafeInt32(reader, 1), SafeStr(reader, 2), SafeStr(reader, 3), SafeStr(reader, 4), SafeStr(reader, 5), SafeStr(reader, 6)); } reader.Close(); reader.Dispose(); cmd.Dispose(); db.Close(); db.Dispose(); return(series); }
/// <summary> /// Put the specified request. /// </summary> /// <param name="request">Request.</param> public object Put(CollectionUpdateRequestTep request) { WebSeries result; var context = TepWebContext.GetWebContext(PagePrivileges.AdminOnly); try { context.Open(); context.LogInfo(this, string.Format("/data/collection PUT Id='{0}'", request.Id)); Collection serie = Collection.FromId(context, request.Id); if (request.Access != null) { switch (request.Access) { case "public": serie.GrantPermissionsToAll(); Activity activity = new Activity(context, serie, EntityOperationType.Share); activity.Store(); break; case "private": serie.RevokePermissionsFromAll(true, false); break; default: break; } } else { serie = (Terradue.Tep.Collection)request.ToEntity(context, serie); serie.Store(); Activity activity = new Activity(context, serie, EntityOperationType.Change); activity.Store(); } result = new WebSeries(serie); context.Close(); } catch (Exception e) { context.LogError(this, e.Message, e); context.Close(); throw e; } return(result); }
protected void Page_Load(object sender, EventArgs e) { string filename = ""; List <EncoderConfig> cfgs = Utils.LoadConfig(); EncoderConfig cfg = cfgs[Int32.Parse(Request.QueryString["idProfile"])]; ServiceInterface server = new ServiceInterface(); if (Request.QueryString["idChannel"] != null) { if (server.GetChannel(Int32.Parse(Request.QueryString["idChannel"])).isRadio) { bufferSize = 2560; } WebTvResult res = server.StartTimeShifting(Int32.Parse(Request.QueryString["idChannel"])); if (res.result != 0) { Utils.Log("Streamer.aspx: ERROR: StartTimeShifting failed with error: " + res.result.ToString()); Response.Output.WriteLine("ERROR: StartTimeShifting failed with error: " + res.result.ToString()); Response.End(); return; } usedCard = res.user.idCard; usedChannel = res.user.idChannel; tvServerUsername = res.user.name; if (cfg.inputMethod == TransportMethod.Filename) { filename = res.rtspURL; } else { filename = res.timeshiftFile; } } else if (Request.QueryString["idRecording"] != null) { WebRecording rec = server.GetRecording(Int32.Parse(Request.QueryString["idRecording"])); filename = rec.fileName; } else if (Request.QueryString["idMovie"] != null) { WebMovie movie = server.GetMovie(Int32.Parse(Request.QueryString["idMovie"])); filename = movie.file; } else if (Request.QueryString["idMusicTrack"] != null) { WebMusicTrack track = server.GetMusicTrack(Int32.Parse(Request.QueryString["idMusicTrack"])); filename = track.file; } else if (Request.QueryString["idTvSeries"] != null) { WebSeries series = server.GetTvSeries(Request.QueryString["idTvSeries"]); filename = series.filename; } else if (Request.QueryString["idMovingPicture"] != null) { WebMovingPicture pic = server.GetMovingPicture(Int32.Parse(Request.QueryString["idMovingPicture"])); filename = pic.filename; } if (!File.Exists(filename) && !filename.StartsWith("rtsp://")) { Utils.Log("Streamer.aspx: Requested file " + filename + " does not exist."); return; } Response.Clear(); Response.Buffer = false; Response.BufferOutput = false; Response.AppendHeader("Connection", "Keep-Alive"); Response.ContentType = "video/x-msvideo"; Response.StatusCode = 200; Stream mediaStream = null; EncoderWrapper encoder = null; Stream outStream = null; if (cfg.inputMethod != TransportMethod.Filename) { if (Request.QueryString["idChannel"] != null) { mediaStream = new TsBuffer(filename); } else { mediaStream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); } encoder = new EncoderWrapper(mediaStream, cfg); } else { encoder = new EncoderWrapper(filename, cfg); } if (cfg.useTranscoding) { outStream = encoder; } else { outStream = mediaStream; } byte[] buffer = new byte[bufferSize]; int read; try { while ((read = outStream.Read(buffer, 0, buffer.Length)) > 0) { try { Response.OutputStream.Write(buffer, 0, read); } catch (Exception) { break; // stream is closed } if (Request.QueryString["idChannel"] != null) { server.SendHeartBeat(usedChannel, usedCard, tvServerUsername); } } } catch (Exception ex) { Utils.Log("Streamer.aspx: Exception raised=" + ex.Message + Environment.NewLine + ex.StackTrace); } if (mediaStream != null) { mediaStream.Close(); } if (Request.QueryString["idChannel"] != null) { server.StopTimeShifting(usedChannel, usedCard, tvServerUsername); } encoder.StopProcess(); Response.End(); }