예제 #1
0
        public static Dictionary <string, TVService> ChannelsFromLocalStore()
        {
            if (!SavedChannelsExist)
            {
                return(new Dictionary <string, TVService>());
            }

            string           xmlChannels = FileCache.ReadTextFileFromDisk(SavedChannelsFNFullPath);
            List <TVService> channels    = EPGImporter.ChannelListFromString(xmlChannels);

            Dictionary <string, TVService> dChannels = new Dictionary <string, TVService>();

            foreach (TVService tvc in channels)
            {
                dChannels.Add(tvc.UniqueId, tvc);
            }
            return(dChannels);
        }
예제 #2
0
        public static bool GetLogoDataForCallsign(string svcID, int width, int height, out byte[] logoData)
        {
            logoData = new byte[] { };
            TVService tvs = TVServiceWithIDOrNull(svcID);

            if (tvs == null)
            {
                return(false);
            }

            if (tvs.LogoUri == null)
            {
                return(false);
            }

            string fileFN = FileFNFromUri(tvs.LogoUri);

            byte[] inLogoData = FileCache.ReadBinaryFile(fileFN);

            System.Drawing.Size sz = new System.Drawing.Size(width, height);
            return(ImageResizer.ResizePicture(inLogoData, sz, out logoData, true));
        }
예제 #3
0
        private void SetupMobileTheme()
        {
            string filePath = "static/skins/" + Settings.Default.CurrentMobileThemeName + "/about.txt";

            txtAboutMobileTheme.Text = FileCache.ReadTextFile(filePath);
        }
예제 #4
0
        public bool SendFileToBrowser(string localFilePath, bool remapToSkin, bool sendChunked, bool makeDownloadable)
        {
            // File location
            if (remapToSkin)
            {
                localFilePath = localFilePath.Replace("skin/", "");
                while (localFilePath.StartsWith("/"))
                {
                    localFilePath = localFilePath.Substring(1);
                }
                localFilePath = localFilePath.Replace("/", "\\");

                localFilePath = Path.Combine(Themes.ActiveThemeFolder, localFilePath);
            }

            // Read file  (this MAY remap a relative path to an absolute path, so don't check if file exists ahead of this)
            byte[] bytes = FileCache.ReadBinaryFile(localFilePath);

            if (bytes.Length == 0)
            {
                if (Settings.Default.DebugAdvanced)
                {
                    Functions.WriteLineToLogFile("SendFileToBrowser: File doesn't exist: " + localFilePath);
                }

                return(Send404Page());
            }

            // Get mime type
            wipeHeader();
            addToHeaderMimeType(Functions.MimeTypeForFileName(localFilePath));

            // Trim to any range request
            if (Request.Headers.HasParameter("Range"))
            {
                if ((Settings.Default.DebugServer) && (Settings.Default.DebugAdvanced))
                {
                    Functions.WriteLineToLogFile("Sending byte range..");
                }
                bool shouldReturnContentRange = true;
                bytes = TrimBytesToRange(bytes, ref shouldReturnContentRange);

                if (!shouldReturnContentRange)  // in case it wasn't syntactically correct, return normal file (RFC 2616)
                {
                    Response.StatusCode = 200;
                }
            }
            else
            {
                // Send header
                Response.StatusCode = 200;
            }

            // Downloadable?
            if (makeDownloadable)
            {
                string dlFilename = Path.GetFileName(localFilePath);
                addToHeader("content-disposition", "attachment; filename=" + HttpUtility.UrlEncode(dlFilename));
            }

            // Send bytes
            return(SendToBrowser(bytes, true));
        }