示例#1
0
        public static List <VideoAlternative> List(int frameId)
        {
            List <VideoAlternative> list = null;

            string sql = string.Format(
                "SELECT c.ContentId, Name, convert(varbinary(256),Data) Chunk, c.Version FROM VideoAlternative a INNER JOIN Content c ON c.ContentId=a.ContentId WHERE a.FrameId={0};",
                frameId
                );

            using (DataSet ds = DataAccess.RunSql(sql))
            {
                int count = ds.Tables[0].Rows.Count;
                list = new List <VideoAlternative>(count);
                if (count > 0)
                {
                    list.Capacity = count;
                    foreach (DataRow dr in ds.Tables[0].Rows)
                    {
                        if (dr["Chunk"] != DBNull.Value)
                        {
                            VideoAlternative va = new VideoAlternative();
                            va._initFromRow(dr);
                            va.CacheKey = va.cacheKeyForVideoId(frameId);
                            list.Add(va);
                        }
                    }
                }
            }

            return(list);
        }
示例#2
0
        private void _init()
        {
            using (SqlCommand cmd = new SqlCommand()
            {
                CommandType = CommandType.Text,
                CommandText = "SELECT TOP 1 * FROM Video WHERE FrameId=@frameId",
            })
            {
                cmd.Parameters.AddWithValue("@frameId", FrameId);
                cmd.ExecuteReaderExt((dr) =>
                {
                    PlayMuted = dr.Boolean("PlayMuted");
                    AutoLoop  = dr.Boolean("AutoLoop");
                    return(false);
                });
            }

            VideoAlternatives = VideoAlternative.List(FrameId);
            NoVideoSupport    = DisplayMonkey.Language.Resources.BrowserNoVideoSupport;
        }
示例#3
0
        private void _init()
        {
            string sql = string.Format(
                "SELECT TOP 1 * FROM Video WHERE FrameId={0};",
                FrameId
                );

            using (DataSet ds = DataAccess.RunSql(sql))
            {
                if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                {
                    DataRow dr = ds.Tables[0].Rows[0];
                    PlayMuted         = dr.Boolean("PlayMuted");
                    AutoLoop          = dr.Boolean("AutoLoop");
                    VideoAlternatives = VideoAlternative.List(FrameId);
                }
            }

            NoVideoSupport = DisplayMonkey.Language.Resources.BrowserNoVideoSupport;
        }
示例#4
0
        public static List <VideoAlternative> List(int frameId)
        {
            List <VideoAlternative> list = new List <VideoAlternative>();

            using (SqlCommand cmd = new SqlCommand()
            {
                CommandType = CommandType.Text,
                CommandText =
                    "SELECT a.FrameId, c.ContentId, Name, convert(varbinary(256),Data) Chunk, c.Version FROM VideoAlternative a " +
                    "INNER JOIN Content c ON c.ContentId=a.ContentId WHERE a.FrameId=@frameId",
            })
            {
                cmd.Parameters.AddWithValue("@frameId", frameId);
                cmd.ExecuteReaderExt((dr) =>
                {
                    VideoAlternative va = new VideoAlternative();
                    va._initFromRow(dr);
                    list.Add(va);
                    return(true);
                });
            }

            return(list);
        }
示例#5
0
        public override async Task ProcessRequestAsync(HttpContext context)
        {
            HttpRequest  Request  = context.Request;
            HttpResponse Response = context.Response;

            byte[] data      = null;
            string mediaName = "";

            int frameId   = Request.IntOrZero("frame");
            int contentId = Request.IntOrZero("content");

            try
            {
                Video            video = new Video(frameId);
                VideoAlternative va    = new VideoAlternative(video, contentId);

                if (va.ContentId != 0)
                {
                    data = await HttpRuntime.Cache.GetOrAddAbsoluteAsync(
                        va.CacheKey,
                        async (expire) =>
                    {
                        expire.When = DateTime.Now.AddMinutes(video.CacheInterval);

                        Content content = await Content.GetDataAsync(va.ContentId);
                        if (content == null)
                        {
                            return(null);
                        }
                        mediaName = content.Name;
                        return(content.Data);
                    });
                }
            }

            catch (Exception ex)
            {
                throw new HttpException(500, ex.Message);
            }


            if (data == null)
            {
                throw new HttpException(404, "File is empty");
            }

            else
            {
                string mimeType = null;

                try
                {
                    if (null == (mimeType = MimeTypeParser.GetMimeTypeRaw(data)))
                    {
                        if (null == (mimeType = MimeTypeParser.GetMimeTypeFromRegistry(mediaName)))
                        {
                            if (null == (mimeType = MimeTypeParser.GetMimeTypeFromList(mediaName)))
                            {
                                mimeType = "application/octet-stream";
                            }
                        }
                    }
                }

                catch
                {
                    mimeType = "application/octet-stream";
                }

                Response.ContentType = mimeType;
                Response.AddHeader("Content-Disposition", string.Format(
                                       "attachment; filename=\"{0}\"",
                                       mediaName
                                       ));
                Response.AddHeader("Content-Length", data.Length.ToString());
            }

            Response.BinaryWrite(data);
            Response.Flush();
        }
示例#6
0
		public void ProcessRequest(HttpContext context)
		{
			HttpRequest Request = context.Request;
			HttpResponse Response = context.Response;

			byte[] data = null;
			string mediaName = "";

            int frameId = DataAccess.IntOrZero(Request.QueryString["frame"]);
            int contentId = DataAccess.IntOrZero(Request.QueryString["content"]);
            
            try
			{
                Video video = new Video(frameId);
                VideoAlternative va = new VideoAlternative(video, contentId);

                if (va.ContentId != 0)
                {
                    data = HttpRuntime.Cache.GetOrAddAbsolute(
                        va.CacheKey,
                        () => 
                        { 
                            Content content = new Content(va.ContentId);
                            if (content.ContentId == 0)
                                return null;
                            mediaName = content.Name;
                            return content.Data;
                        },
                        DateTime.Now.AddMinutes(video.CacheInterval)
                        );
                }
			}

			catch (Exception ex)
			{
				throw new HttpException(500, ex.Message);
			}


			if (data == null)
			{
				throw new HttpException(404, "File is empty");
			}

			else
			{
				string mimeType = null;

				try
				{
					if (null == (mimeType = MimeTypeParser.GetMimeTypeRaw(data)))
					{
						if (null == (mimeType = MimeTypeParser.GetMimeTypeFromRegistry(mediaName)))
						{
							if (null == (mimeType = MimeTypeParser.GetMimeTypeFromList(mediaName)))
							{
								mimeType = "application/octet-stream";
							}
						}
					}
				}

				catch
				{
					mimeType = "application/octet-stream";
				}

				Response.ContentType = mimeType;
				Response.AddHeader("Content-Disposition", string.Format(
					"attachment; filename=\"{0}\"",
					mediaName
					));
				Response.AddHeader("Content-Length", data.Length.ToString());
			}

			Response.BinaryWrite(data);
            Response.Flush();
		}
示例#7
0
        public static List<VideoAlternative> List(int frameId)
        {
            List<VideoAlternative> list = null;

            string sql = string.Format(
                "SELECT c.ContentId, Name, convert(varbinary(256),Data) Chunk, c.Version FROM VideoAlternative a INNER JOIN Content c ON c.ContentId=a.ContentId WHERE a.FrameId={0};",
                frameId
                );

            using (DataSet ds = DataAccess.RunSql(sql))
            {
                int count = ds.Tables[0].Rows.Count;
                list = new List<VideoAlternative>(count);
                if (count > 0)
                {
                    list.Capacity = count;
                    foreach (DataRow dr in ds.Tables[0].Rows)
                    {
                        if (dr["Chunk"] != DBNull.Value)
                        {
                            VideoAlternative va = new VideoAlternative();
                            va._initFromRow(dr);
                            va.CacheKey = va.cacheKeyForVideoId(frameId);
                            list.Add(va);
                        }
                    }
                }
            }

            return list;
        }