/// <summary> /// Parses the key/value pair from a node, and adds them to the result. /// </summary> /// <param name="elem">Element to get info from.</param> /// <param name="res">Result object to extract data to.</param> private void AddDataToResult(IDomElement elem, OpenGraphData res) { var key = ParseKeyFromNode(elem); if (!res.ContainsKey(key)) { res.Add(key, ParseValueFromNode(elem)); } }
/// <summary> /// Parses the Open Graph parameters inside the passed html document. /// </summary> /// <param name="dom">CQ dom.</param> /// <returns>OpenGraph data.</returns> public OpenGraphData ParseDocument(CQ dom) { var ret = new OpenGraphData(); foreach (var elem in this.GetOGElements(dom)) { this.AddDataToResult(elem, ret); } return(ret); }
/// <summary> /// Maps an EF PageVersion record from the db into an OpenGraphData /// object. /// </summary> /// <param name="dbPageVersion">PageVersion record from the database, must include the OpenGraphImageAsset property.</param> public virtual OpenGraphData Map(PageVersion dbPageVersion) { var result = new OpenGraphData() { Description = dbPageVersion.OpenGraphDescription, Title = dbPageVersion.OpenGraphTitle }; if (dbPageVersion.OpenGraphImageId.HasValue && dbPageVersion.OpenGraphImageAsset == null) { throw new Exception($"{nameof(PageVersion)}.{nameof(dbPageVersion.OpenGraphImageAsset)} must be included in the EF query if using {nameof(OpenGraphDataMapper)}. "); } if (dbPageVersion.OpenGraphImageAsset != null) { result.Image = _imageAssetRenderDetailsMapper.Map(dbPageVersion.OpenGraphImageAsset); } return(result); }