/// <summary>
        /// Add google analytics script accessor to Page.
        /// </summary>
        /// <param name="args">The args.</param>
        private void Events_PageRendering(PageRenderingEventArgs args)
        {
            IHttpContextAccessor httpContextAccessor;

            using (var container = ContextScopeProvider.CreateChildContainer())
            {
                httpContextAccessor = container.Resolve<IHttpContextAccessor>();
            }

            var openGraphMetaTitle = new OpenGraphMetaDataProjection("title", args.RenderPageData.PageData.Title);
            AddMetaDataIfNotExistsInArgs(args, openGraphMetaTitle);

            var openGraphMetaUrl = new OpenGraphMetaDataProjection("url", httpContextAccessor.MapPublicPath(args.RenderPageData.PageData.PageUrl));
            AddMetaDataIfNotExistsInArgs(args, openGraphMetaUrl);

            var pageModel = args.RenderPageData.GetPageModel();

            if (pageModel.MainImage != null)
            {
                var openGraphImage = new OpenGraphMetaDataProjection("image", pageModel.MainImage.PublicUrl);
                AddMetaDataIfNotExistsInArgs(args, openGraphImage);
            }
            else
            {
                if (pageModel.FeaturedImage != null)
                {
                    var openGraphImage = new OpenGraphMetaDataProjection("image", pageModel.FeaturedImage.PublicUrl);
                    AddMetaDataIfNotExistsInArgs(args, openGraphImage);
                }
                else if (pageModel.SecondaryImage != null)
                {
                    var openGraphImage = new OpenGraphMetaDataProjection("image", pageModel.SecondaryImage.PublicUrl);
                    AddMetaDataIfNotExistsInArgs(args, openGraphImage);
                }
            }

            if (!string.IsNullOrEmpty(pageModel.Description))
            {
                var openGraphDescription = new OpenGraphMetaDataProjection("description", pageModel.Description);
                AddMetaDataIfNotExistsInArgs(args, openGraphDescription);
            }
        }
 private void AddMetaDataIfNotExistsInArgs(PageRenderingEventArgs args, OpenGraphMetaDataProjection item)
 {
     if (!args.RenderPageData.Metadata.Contains(item))
     {
         args.RenderPageData.Metadata.Add(item);
     }
 }
 protected bool Equals(OpenGraphMetaDataProjection other)
 {
     return string.Equals(property, other.property) && string.Equals(content, other.content);
 }