Example #1
0
        private void RefreshSiteIconCache()
        {
            try
            {
                string iconTemplatPath = string.Empty;

                try
                {
                    if (!string.IsNullOrWhiteSpace(_blogConfig.GeneralSettings.SiteIconBase64))
                    {
                        var siteIconBytes = Convert.FromBase64String(_blogConfig.GeneralSettings.SiteIconBase64);

                        using (var ms = new MemoryStream(siteIconBytes))
                        {
                            var image = Image.FromStream(ms);
                            if (image.Height != image.Width)
                            {
                                throw new InvalidOperationException("Invalid Site Icon Data");
                            }
                        }

                        var p = Path.Join(SiteIconDirectory, "siteicon.png");
                        if (!Directory.Exists(SiteIconDirectory))
                        {
                            Directory.CreateDirectory(SiteIconDirectory);
                        }

                        System.IO.File.WriteAllBytes(p, siteIconBytes);
                        iconTemplatPath = p;
                    }
                }
                catch (Exception e)
                {
                    Logger.LogError($"Error {nameof(RefreshSiteIconCache)}()", e);
                }

                if (string.IsNullOrWhiteSpace(iconTemplatPath))
                {
                    Logger.LogWarning("SiteIconBase64 is empty or not valid, fall back to default image.");
                    iconTemplatPath = Path.Join($"{_env.WebRootPath}", "images", "siteicon-default.png");
                }

                if (System.IO.File.Exists(iconTemplatPath))
                {
                    _siteIconGenerator.GenerateIcons(iconTemplatPath, SiteIconDirectory);
                }
            }
            catch (Exception ex)
            {
                Logger.LogError($"Error {nameof(RefreshSiteIconCache)}()", ex);
            }
        }